simplify setting handling in ace

pull/468/merge
nightwing 2017-11-28 03:11:24 +04:00
rodzic 3ac7d84a6d
commit 2314af3795
1 zmienionych plików z 34 dodań i 43 usunięć

Wyświetl plik

@ -3,7 +3,7 @@ define(function(require, exports, module) {
main.consumes = [ main.consumes = [
"Editor", "editors", "commands", "menus", "Menu", "MenuItem", "Divider", "Editor", "editors", "commands", "menus", "Menu", "MenuItem", "Divider",
"settings", "c9", "preferences", "ui", "tabManager", "layout", "util", "settings", "c9", "preferences", "ui", "tabManager", "layout", "util",
"threewaymerge", "error_handler" "threewaymerge", "error_handler", "apf"
]; ];
main.provides = ["ace"]; main.provides = ["ace"];
return main; return main;
@ -15,6 +15,7 @@ define(function(require, exports, module) {
var menus = imports.menus; var menus = imports.menus;
var settings = imports.settings; var settings = imports.settings;
var layout = imports.layout; var layout = imports.layout;
var apf = imports.apf;
var c9 = imports.c9; var c9 = imports.c9;
var ui = imports.ui; var ui = imports.ui;
var util = imports.util; var util = imports.util;
@ -233,49 +234,49 @@ define(function(require, exports, module) {
var STRING = "get"; var STRING = "get";
var NUMBER = "getNumber"; var NUMBER = "getNumber";
// Name, Default Value, Type, Old Name, Store in Project Settings
var font = "Monaco, Menlo, Ubuntu Mono, Consolas, source-code-pro, monospace"; var font = "Monaco, Menlo, Ubuntu Mono, Consolas, source-code-pro, monospace";
// Name, Default Value, Type
var aceSettings = [ var aceSettings = [
// detected from document value // detected from document value
["newLineMode", "unix", STRING, "newlinemode", 1], ["newLineMode", "unix", STRING],
// Per document // Per document
["tabSize", 4, NUMBER, "tabsize", 1], ["tabSize", 4, NUMBER],
["useSoftTabs", true, BOOL, "softtabs", 1], ["useSoftTabs", true, BOOL],
["guessTabSize", true, BOOL, "guesstabsize", 1], ["guessTabSize", true, BOOL],
["useWrapMode", false, BOOL, "wrapmode"], ["useWrapMode", false, BOOL],
["wrapToView", true, BOOL, "wrapmodeViewport"], ["wrapToView", true, BOOL],
// Ace // Ace
["fontSize", 12, NUMBER, "fontsize"], ["fontSize", 12, NUMBER],
["fontFamily", font, STRING, "fontfamily"], ["fontFamily", font, STRING],
["antialiasedfonts", false, BOOL], ["antialiasedfonts", false, BOOL],
["overwrite", false, BOOL, "overwrite"], ["overwrite", false, BOOL],
["selectionStyle", "line", STRING, "selectstyle"], ["selectionStyle", "line", STRING],
["cursorStyle", "ace", STRING, "cursorstyle"], ["cursorStyle", "ace", STRING],
["highlightActiveLine", true, BOOL, "activeline"], ["highlightActiveLine", true, BOOL],
["highlightGutterLine", true, BOOL, "gutterline"], ["highlightGutterLine", true, BOOL],
["showInvisibles", false, BOOL, "showinvisibles"], ["showInvisibles", false, BOOL],
["showPrintMargin", true, BOOL, "showprintmargin"], ["showPrintMargin", true, BOOL],
["displayIndentGuides", true, BOOL, "showindentguides"], ["displayIndentGuides", true, BOOL],
["printMarginColumn", 80, NUMBER, "printmargincolumn"], ["printMarginColumn", 80, NUMBER],
["behavioursEnabled", true, BOOL, "behaviors"], ["behavioursEnabled", true, BOOL],
["wrapBehavioursEnabled", false, BOOL, "wrapbehaviors"], ["wrapBehavioursEnabled", false, BOOL],
["scrollSpeed", 2, NUMBER, "scrollspeed"], ["scrollSpeed", 2, NUMBER],
["showGutter", true, BOOL, "gutter"], ["showGutter", true, BOOL],
["showLineNumbers", true, STRING], ["showLineNumbers", true, STRING],
["showFoldWidgets", true, BOOL, "folding"], ["showFoldWidgets", true, BOOL],
["fadeFoldWidgets", true, BOOL, "fadefoldwidgets"], ["fadeFoldWidgets", true, BOOL],
["highlightSelectedWord", true, BOOL, "highlightselectedword"], ["highlightSelectedWord", true, BOOL],
["animatedScroll", true, BOOL, "animatedscroll"], ["animatedScroll", true, BOOL],
["scrollPastEnd", 0.5, NUMBER], ["scrollPastEnd", 0.5, NUMBER],
["mergeUndoDeltas", "off", STRING], ["mergeUndoDeltas", "off", STRING],
["theme", defaultThemes[skin], STRING, "theme"] ["theme", defaultThemes[skin], STRING]
]; ];
var docSettings = aceSettings.slice(1, 6); var docSettings = aceSettings.slice(1, 6);
var editorSettings = aceSettings.slice(6);
var projectSettings = aceSettings.slice(0, 4); var projectSettings = aceSettings.slice(0, 4);
var userSettings = aceSettings.slice(4); var userSettings = aceSettings.slice(4);
var docLut = {}; docSettings.forEach(function(x) { docLut[x[0]] = x; }); var docLut = {}; docSettings.forEach(function(x) { docLut[x[0]] = x; });
var lastSettings = {};
/***** Undo Manager *****/ /***** Undo Manager *****/
@ -482,7 +483,6 @@ define(function(require, exports, module) {
setCommands(); setCommands();
// Settings // Settings
var lastSettings = {};
function updateSettings(e, list, prefix) { function updateSettings(e, list, prefix) {
var options = {}; var options = {};
(list || aceSettings).forEach(function(setting) { (list || aceSettings).forEach(function(setting) {
@ -490,15 +490,6 @@ define(function(require, exports, module) {
= settings[setting[2]](prefix + "/ace/@" + setting[0]); = 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", { handleEmit("settingsUpdate", {
options: options options: options
}); });
@ -509,10 +500,10 @@ define(function(require, exports, module) {
util.extend(lastSettings, options); util.extend(lastSettings, options);
} }
settings.setDefaults("user/ace", userSettings);
settings.setDefaults("project/ace", projectSettings);
settings.on("read", function(e) { 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 // TODO remove when there is a better way of loading custom themes
var customTheme = settings.get("user/ace/@customTheme"); var customTheme = settings.get("user/ace/@customTheme");
if (customTheme) if (customTheme)
@ -2500,7 +2491,7 @@ define(function(require, exports, module) {
if (!e.state || !e.state.options) if (!e.state || !e.state.options)
docSettings.forEach(function(setting) { docSettings.forEach(function(setting) {
var name = setting[0]; var name = setting[0];
setOption(name, setting[1], c9Session); setOption(name, lastSettings[name], c9Session);
}); });
if (e.state && e.state.customSyntax) if (e.state && e.state.customSyntax)