kopia lustrzana https://github.com/c9/core
simplify setting handling in ace
rodzic
3ac7d84a6d
commit
2314af3795
|
@ -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)
|
||||||
|
|
Ładowanie…
Reference in New Issue