From 2314af37959dd9de82cef4e26c0fd38b6bfdd53d Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 28 Nov 2017 03:11:24 +0400 Subject: [PATCH] simplify setting handling in ace --- plugins/c9.ide.ace/ace.js | 77 +++++++++++++++++---------------------- 1 file changed, 34 insertions(+), 43 deletions(-) diff --git a/plugins/c9.ide.ace/ace.js b/plugins/c9.ide.ace/ace.js index 32f710be..d63e6fa0 100644 --- a/plugins/c9.ide.ace/ace.js +++ b/plugins/c9.ide.ace/ace.js @@ -3,7 +3,7 @@ define(function(require, exports, module) { main.consumes = [ "Editor", "editors", "commands", "menus", "Menu", "MenuItem", "Divider", "settings", "c9", "preferences", "ui", "tabManager", "layout", "util", - "threewaymerge", "error_handler" + "threewaymerge", "error_handler", "apf" ]; main.provides = ["ace"]; return main; @@ -15,6 +15,7 @@ define(function(require, exports, module) { var menus = imports.menus; var settings = imports.settings; var layout = imports.layout; + var apf = imports.apf; var c9 = imports.c9; var ui = imports.ui; var util = imports.util; @@ -233,49 +234,49 @@ define(function(require, exports, module) { var STRING = "get"; var NUMBER = "getNumber"; - // Name, Default Value, Type, Old Name, Store in Project Settings var font = "Monaco, Menlo, Ubuntu Mono, Consolas, source-code-pro, monospace"; + // Name, Default Value, Type var aceSettings = [ // detected from document value - ["newLineMode", "unix", STRING, "newlinemode", 1], + ["newLineMode", "unix", STRING], // Per document - ["tabSize", 4, NUMBER, "tabsize", 1], - ["useSoftTabs", true, BOOL, "softtabs", 1], - ["guessTabSize", true, BOOL, "guesstabsize", 1], - ["useWrapMode", false, BOOL, "wrapmode"], - ["wrapToView", true, BOOL, "wrapmodeViewport"], + ["tabSize", 4, NUMBER], + ["useSoftTabs", true, BOOL], + ["guessTabSize", true, BOOL], + ["useWrapMode", false, BOOL], + ["wrapToView", true, BOOL], // Ace - ["fontSize", 12, NUMBER, "fontsize"], - ["fontFamily", font, STRING, "fontfamily"], + ["fontSize", 12, NUMBER], + ["fontFamily", font, STRING], ["antialiasedfonts", false, BOOL], - ["overwrite", false, BOOL, "overwrite"], - ["selectionStyle", "line", STRING, "selectstyle"], - ["cursorStyle", "ace", STRING, "cursorstyle"], - ["highlightActiveLine", true, BOOL, "activeline"], - ["highlightGutterLine", true, BOOL, "gutterline"], - ["showInvisibles", false, BOOL, "showinvisibles"], - ["showPrintMargin", true, BOOL, "showprintmargin"], - ["displayIndentGuides", true, BOOL, "showindentguides"], - ["printMarginColumn", 80, NUMBER, "printmargincolumn"], - ["behavioursEnabled", true, BOOL, "behaviors"], - ["wrapBehavioursEnabled", false, BOOL, "wrapbehaviors"], - ["scrollSpeed", 2, NUMBER, "scrollspeed"], - ["showGutter", true, BOOL, "gutter"], + ["overwrite", false, BOOL], + ["selectionStyle", "line", STRING], + ["cursorStyle", "ace", STRING], + ["highlightActiveLine", true, BOOL], + ["highlightGutterLine", true, BOOL], + ["showInvisibles", false, BOOL], + ["showPrintMargin", true, BOOL], + ["displayIndentGuides", true, BOOL], + ["printMarginColumn", 80, NUMBER], + ["behavioursEnabled", true, BOOL], + ["wrapBehavioursEnabled", false, BOOL], + ["scrollSpeed", 2, NUMBER], + ["showGutter", true, BOOL], ["showLineNumbers", true, STRING], - ["showFoldWidgets", true, BOOL, "folding"], - ["fadeFoldWidgets", true, BOOL, "fadefoldwidgets"], - ["highlightSelectedWord", true, BOOL, "highlightselectedword"], - ["animatedScroll", true, BOOL, "animatedscroll"], + ["showFoldWidgets", true, BOOL], + ["fadeFoldWidgets", true, BOOL], + ["highlightSelectedWord", true, BOOL], + ["animatedScroll", true, BOOL], ["scrollPastEnd", 0.5, NUMBER], ["mergeUndoDeltas", "off", STRING], - ["theme", defaultThemes[skin], STRING, "theme"] + ["theme", defaultThemes[skin], STRING] ]; var docSettings = aceSettings.slice(1, 6); - var editorSettings = aceSettings.slice(6); var projectSettings = aceSettings.slice(0, 4); var userSettings = aceSettings.slice(4); var docLut = {}; docSettings.forEach(function(x) { docLut[x[0]] = x; }); + var lastSettings = {}; /***** Undo Manager *****/ @@ -482,7 +483,6 @@ define(function(require, exports, module) { setCommands(); // Settings - var lastSettings = {}; function updateSettings(e, list, prefix) { var options = {}; (list || aceSettings).forEach(function(setting) { @@ -490,15 +490,6 @@ define(function(require, exports, module) { = settings[setting[2]](prefix + "/ace/@" + setting[0]); }); - // When loading from settings only set editor settings - docSettings.forEach(function(setting) { - var val = options[setting[0]]; - if (val !== undefined) { - setting[1] = val; - delete options[setting[0]]; - } - }); - handleEmit("settingsUpdate", { options: options }); @@ -509,10 +500,10 @@ define(function(require, exports, module) { util.extend(lastSettings, options); } + settings.setDefaults("user/ace", userSettings); + settings.setDefaults("project/ace", projectSettings); + 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) @@ -2500,7 +2491,7 @@ define(function(require, exports, module) { if (!e.state || !e.state.options) docSettings.forEach(function(setting) { var name = setting[0]; - setOption(name, setting[1], c9Session); + setOption(name, lastSettings[name], c9Session); }); if (e.state && e.state.customSyntax)