kopia lustrzana https://github.com/c9/core
Merge pull request +15814 from c9/default-settings
fix "reset to default settings" buttonpull/467/head
commit
ec23a68041
|
@ -50,6 +50,7 @@ define(function(require, exports, module) {
|
|||
var KEYS = Object.keys(PATH);
|
||||
|
||||
var saveToCloud = {};
|
||||
var defaults = {};
|
||||
var model = {};
|
||||
var cache = {};
|
||||
var diff = 0; // TODO should we allow this to be undefined and get NaN in timestamps?
|
||||
|
@ -67,7 +68,7 @@ define(function(require, exports, module) {
|
|||
if (!json) {
|
||||
// Load from TEMPLATE
|
||||
if (options.settings == "defaults" || testing)
|
||||
json = TEMPLATE;
|
||||
json = util.cloneObject(TEMPLATE);
|
||||
// Load from parsed settings in the index file
|
||||
else if (options.settings) {
|
||||
json = options.settings;
|
||||
|
@ -80,7 +81,7 @@ define(function(require, exports, module) {
|
|||
try {
|
||||
json[type] = JSON.parse(json[type]);
|
||||
} catch (e) {
|
||||
json[type] = TEMPLATE[type];
|
||||
json[type] = util.cloneObject(TEMPLATE[type]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -91,8 +92,13 @@ define(function(require, exports, module) {
|
|||
KEYS.forEach(function(type) {
|
||||
if (!skipCloud[type] && json)
|
||||
return --count;
|
||||
fs.readFile(PATH[type], function(err, data) {
|
||||
if (!json) json = {};
|
||||
if (!json)
|
||||
json = {};
|
||||
if (type == "state" && debugMode)
|
||||
return done(null, localStorage["debugState" + c9.projectName]);
|
||||
fs.readFile(PATH[type], done);
|
||||
|
||||
function done(err, data) {
|
||||
try {
|
||||
json[type] = err ? {} : JSON.parse(data);
|
||||
} catch (e) {
|
||||
|
@ -103,7 +109,7 @@ define(function(require, exports, module) {
|
|||
|
||||
if (--count === 0)
|
||||
loadSettings(json);
|
||||
});
|
||||
}
|
||||
});
|
||||
if (count > 0)
|
||||
return;
|
||||
|
@ -214,59 +220,31 @@ define(function(require, exports, module) {
|
|||
}
|
||||
|
||||
function read(json, isReset) {
|
||||
try {
|
||||
if (testing) throw "testing";
|
||||
|
||||
KEYS.forEach(function(type) {
|
||||
if (json[type])
|
||||
model[type] = json[type];
|
||||
});
|
||||
|
||||
if (resetSettings) {
|
||||
var query = (resetSettings == 1
|
||||
? "user|state" : resetSettings).split("|");
|
||||
resetSettings = false;
|
||||
query.forEach(function(type) {
|
||||
model[type] = util.cloneObject(TEMPLATE[type]);
|
||||
});
|
||||
}
|
||||
|
||||
if (testing) {
|
||||
KEYS.forEach(function(type) {
|
||||
if (json[type])
|
||||
model[type] = json[type];
|
||||
});
|
||||
|
||||
if (resetSettings) {
|
||||
var query = (resetSettings == 1
|
||||
? "user|state" : resetSettings).split("|");
|
||||
query.forEach(function(type) {
|
||||
model[type] = TEMPLATE[type];
|
||||
});
|
||||
}
|
||||
|
||||
} catch (e) {
|
||||
KEYS.forEach(function(type) {
|
||||
model[type] = TEMPLATE[type];
|
||||
model[type] = util.cloneObject(TEMPLATE[type]);
|
||||
});
|
||||
}
|
||||
|
||||
if (!c9.debug && !testing) {
|
||||
try {
|
||||
emit("read", {
|
||||
model: model,
|
||||
ext: plugin,
|
||||
reset: isReset
|
||||
});
|
||||
} catch (e) {
|
||||
console.error("Error loading settings, reseting to defaults");
|
||||
console.error(e);
|
||||
fs.writeFile(PATH.project
|
||||
+ ".broken", JSON.stringify(json), function() {});
|
||||
|
||||
KEYS.forEach(function(type) {
|
||||
model[type] = TEMPLATE[type];
|
||||
});
|
||||
|
||||
emit("read", {
|
||||
model: model,
|
||||
ext: plugin,
|
||||
reset: isReset
|
||||
});
|
||||
}
|
||||
}
|
||||
else {
|
||||
emit("read", {
|
||||
model: model,
|
||||
ext: plugin,
|
||||
reset: isReset
|
||||
});
|
||||
}
|
||||
emit("read", {
|
||||
model: model,
|
||||
ext: plugin,
|
||||
reset: isReset
|
||||
});
|
||||
|
||||
if (inited)
|
||||
return;
|
||||
|
@ -328,7 +306,7 @@ define(function(require, exports, module) {
|
|||
}
|
||||
|
||||
function setDefaults(path, attr) {
|
||||
var node = getNode(path) || set(path, {}, true, true) && getNode(path);
|
||||
var node = getNode(path, true) || set(path, {}, true, true) && getNode(path, true);
|
||||
var changed;
|
||||
|
||||
attr.forEach(function(a) {
|
||||
|
@ -405,7 +383,7 @@ define(function(require, exports, module) {
|
|||
key = "json()";
|
||||
}
|
||||
|
||||
var hash = model;
|
||||
var hash = isDefault ? defaults : model;
|
||||
if (!parts.every(function(part) {
|
||||
if (!hash[part] && checkDefined) return false;
|
||||
hash = hash[part] || (hash[part] = {});
|
||||
|
@ -474,31 +452,37 @@ define(function(require, exports, module) {
|
|||
return parseFloat(double);
|
||||
}
|
||||
|
||||
function getNode(query) {
|
||||
return get(query, true);
|
||||
function getNode(query, isDefault) {
|
||||
return get(query, true, isDefault);
|
||||
}
|
||||
|
||||
function get(query, isNode) {
|
||||
function getUnsafe(query, isNode, isDefault) {
|
||||
var parts = query.split("/");
|
||||
if (!isNode && parts[parts.length - 1].charAt(0) !== "@")
|
||||
parts.push("json()");
|
||||
|
||||
var hash = model;
|
||||
var hash = isDefault == true ? {} : model;
|
||||
parts.every(function(part) {
|
||||
hash = hash[part];
|
||||
return hash;
|
||||
});
|
||||
|
||||
if (hash === undefined) {
|
||||
hash = isDefault == false ? {} : defaults;
|
||||
parts.every(function(part) {
|
||||
hash = hash[part];
|
||||
return hash;
|
||||
});
|
||||
}
|
||||
return hash;
|
||||
}
|
||||
|
||||
function get(query, isNode, isDefault) {
|
||||
var hash = getUnsafe(query, isNode, isDefault);
|
||||
return hash === undefined ? "" : hash;
|
||||
}
|
||||
|
||||
function exist(query) {
|
||||
var parts = query.split("/");
|
||||
var hash = model;
|
||||
return parts.every(function(part) {
|
||||
hash = hash[part];
|
||||
return hash;
|
||||
});
|
||||
return getUnsafe(query, true) != undefined;
|
||||
}
|
||||
|
||||
function reset(query) {
|
||||
|
@ -506,10 +490,10 @@ define(function(require, exports, module) {
|
|||
|
||||
var info = {};
|
||||
query.split("|").forEach(function(type) {
|
||||
info[type] = TEMPLATE[type];
|
||||
info[type] = util.cloneObject(TEMPLATE[type]);
|
||||
});
|
||||
|
||||
read(model, true);
|
||||
read(info, true);
|
||||
saveToFile();
|
||||
}
|
||||
|
||||
|
|
|
@ -246,7 +246,7 @@ define(function(require, exports, module) {
|
|||
["wrapToView", true, BOOL, "wrapmodeViewport"],
|
||||
|
||||
// Ace
|
||||
["fontSize", "12", NUMBER, "fontsize"],
|
||||
["fontSize", 12, NUMBER, "fontsize"],
|
||||
["fontFamily", font, STRING, "fontfamily"],
|
||||
["antialiasedfonts", false, BOOL],
|
||||
["overwrite", false, BOOL, "overwrite"],
|
||||
|
@ -257,17 +257,17 @@ define(function(require, exports, module) {
|
|||
["showInvisibles", false, BOOL, "showinvisibles"],
|
||||
["showPrintMargin", true, BOOL, "showprintmargin"],
|
||||
["displayIndentGuides", true, BOOL, "showindentguides"],
|
||||
["printMarginColumn", "80", NUMBER, "printmargincolumn"],
|
||||
["printMarginColumn", 80, NUMBER, "printmargincolumn"],
|
||||
["behavioursEnabled", true, BOOL, "behaviors"],
|
||||
["wrapBehavioursEnabled", false, BOOL, "wrapbehaviors"],
|
||||
["scrollSpeed", "2", NUMBER, "scrollspeed"],
|
||||
["scrollSpeed", 2, NUMBER, "scrollspeed"],
|
||||
["showGutter", true, BOOL, "gutter"],
|
||||
["showLineNumbers", true, STRING],
|
||||
["showFoldWidgets", true, BOOL, "folding"],
|
||||
["fadeFoldWidgets", true, BOOL, "fadefoldwidgets"],
|
||||
["highlightSelectedWord", true, BOOL, "highlightselectedword"],
|
||||
["animatedScroll", true, BOOL, "animatedscroll"],
|
||||
["scrollPastEnd", "0.5", NUMBER],
|
||||
["scrollPastEnd", 0.5, NUMBER],
|
||||
["mergeUndoDeltas", "off", STRING],
|
||||
["theme", defaultThemes[skin], STRING, "theme"]
|
||||
];
|
||||
|
|
|
@ -29,7 +29,7 @@ define(function(require, exports, module) {
|
|||
loaded = true;
|
||||
|
||||
settings.on("read", function() {
|
||||
settings.setDefaults("user/collab", [["showbubbles", "true"]]);
|
||||
settings.setDefaults("user/collab", [["showbubbles", true]]);
|
||||
});
|
||||
|
||||
prefs.add({
|
||||
|
|
|
@ -302,16 +302,36 @@ define(function(require, exports, module) {
|
|||
openTab("~/.c9/styles.css", css, "css");
|
||||
}
|
||||
|
||||
function stringifySettings(query) {
|
||||
var model = settings.get(query, true);
|
||||
var defaults = settings.get(query, true, true);
|
||||
var merged = merge({}, defaults, model);
|
||||
function merge(result) {
|
||||
var args = arguments;
|
||||
for (var i = 1; i < args.length; i++) {
|
||||
var o = args[i];
|
||||
for (var key in o) {
|
||||
if (!o[key] || typeof o[key] !== "object") {
|
||||
result[key] = o[key];
|
||||
} else {
|
||||
if (!result[key] || typeof result[key] != "object")
|
||||
result[key] = {};
|
||||
merge(result[key], o[key]);
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return util.stableStringify(merged, null, 4)
|
||||
.replace(/ "(true|false)"/g, " $1");
|
||||
}
|
||||
|
||||
function editProjectSettings() {
|
||||
var value = JSON.stringify(settings.model.project, 0, " ")
|
||||
.replace(/"true"/g, "true")
|
||||
.replace(/"false"/g, "false");
|
||||
var value = stringifySettings("project");
|
||||
openTab(settings.paths.project, value, "javascript");
|
||||
}
|
||||
function editUserSettings() {
|
||||
var value = JSON.stringify(settings.model.user, 0, " ")
|
||||
.replace(/"true"/g, "true")
|
||||
.replace(/"false"/g, "false");
|
||||
var value = stringifySettings("user");
|
||||
openTab(settings.paths.user, value, "javascript");
|
||||
}
|
||||
|
||||
|
|
|
@ -75,9 +75,9 @@ define(function(require, module, exports) {
|
|||
settings.on("read", function(e) {
|
||||
// Defaults
|
||||
settings.setDefaults("state/console", [
|
||||
["expanded", "true"],
|
||||
["maximized", "false"],
|
||||
["height", "153"]
|
||||
["expanded", true],
|
||||
["maximized", false],
|
||||
["height", 153]
|
||||
]);
|
||||
|
||||
// Height
|
||||
|
|
|
@ -112,8 +112,8 @@ define(function(require, exports, module) {
|
|||
|
||||
settings.on("read", function(e) {
|
||||
settings.setDefaults("user/metadata", [
|
||||
// ["enabled", "true"],
|
||||
["undolimit", "100"],
|
||||
// ["enabled", true],
|
||||
["undolimit", 100],
|
||||
]);
|
||||
}, plugin);
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ define(function(require, module, exports) {
|
|||
settings.on("read", function() {
|
||||
settings.setDefaults(xpath, [
|
||||
["name", plugin.name],
|
||||
["enabled", "true"]
|
||||
["enabled", true]
|
||||
]);
|
||||
|
||||
// Start disabled
|
||||
|
|
|
@ -61,13 +61,13 @@ define(function(require, exports, module) {
|
|||
caption: "Reset to Defaults",
|
||||
width: 140,
|
||||
onclick: function() {
|
||||
confirm("Reset Settings",
|
||||
confirm("Reset User Settings",
|
||||
"Are you sure you want to reset your settings?",
|
||||
"By resetting your settings to their "
|
||||
+ "defaults you will lose all custom settings. "
|
||||
+ "Cloud9 will return to it's original configuration",
|
||||
function() {
|
||||
settings.reset();
|
||||
settings.reset("user");
|
||||
}, function() {},
|
||||
{ yes: "Reset settings", no: "Cancel" });
|
||||
}
|
||||
|
|
|
@ -61,7 +61,7 @@ define(function(require, module, exports) {
|
|||
// Settings
|
||||
settings.on("read", function() {
|
||||
settings.setDefaults("project/build", [
|
||||
["saveall", "true"],
|
||||
["saveall", true],
|
||||
["builder", "auto"]
|
||||
]);
|
||||
settings.setDefaults("user/build", [
|
||||
|
|
|
@ -201,7 +201,7 @@ define(function(require, exports, module) {
|
|||
// restore the breakpoints from the IDE settings
|
||||
settings.on("read", function (e) {
|
||||
settings.setDefaults("user/breakpoints", [
|
||||
["active", "true"]
|
||||
["active", true]
|
||||
]);
|
||||
|
||||
var bps = settings.getJson("state/breakpoints");
|
||||
|
@ -483,7 +483,7 @@ define(function(require, exports, module) {
|
|||
codebox = new apf.codebox({
|
||||
skin: "simplebox",
|
||||
"class": "dark",
|
||||
focusselect: "true",
|
||||
focusselect: true,
|
||||
htmlNode: hInput,
|
||||
"initial-message": "Your Expression"
|
||||
});
|
||||
|
|
|
@ -58,8 +58,8 @@ define(function(require, exports, module) {
|
|||
|
||||
settings.on("read", function() {
|
||||
settings.setDefaults("user/debug", [
|
||||
["pause", "0"],
|
||||
["autoshow", "true"]
|
||||
["pause", 0],
|
||||
["autoshow", true]
|
||||
]);
|
||||
|
||||
pauseOnBreaks = settings.getNumber("user/debug/@pause");
|
||||
|
|
|
@ -58,7 +58,7 @@ define(function(require, exports, module) {
|
|||
|
||||
settings.on("read", function() {
|
||||
settings.setDefaults("user/debug", [
|
||||
["autoshow", "true"]
|
||||
["autoshow", true]
|
||||
]);
|
||||
});
|
||||
|
||||
|
|
|
@ -536,9 +536,9 @@ define(function(require, module, exports) {
|
|||
// settings
|
||||
settings.on("read", function(e) {
|
||||
settings.setDefaults("user/runconfig", [
|
||||
["saveallbeforerun", "true"],
|
||||
["debug", "true"],
|
||||
["showruncfglist", "false"]
|
||||
["saveallbeforerun", true],
|
||||
["debug", true],
|
||||
["showruncfglist", false]
|
||||
]);
|
||||
|
||||
if (!settings.getBool("project/run/configs/@inited")) {
|
||||
|
|
|
@ -129,8 +129,8 @@ define(function(require, exports, module) {
|
|||
["backgroundColor", colors[0]],
|
||||
["foregroundColor", colors[1]],
|
||||
["selectionColor", colors[2]],
|
||||
["nosavequestion", "false"],
|
||||
["keepOutput", "false"]
|
||||
["nosavequestion", false],
|
||||
["keepOutput", false]
|
||||
]);
|
||||
|
||||
setSettings();
|
||||
|
@ -1037,13 +1037,13 @@ define(function(require, exports, module) {
|
|||
tab.close();
|
||||
|
||||
if (question.dontAsk)
|
||||
settings.set("user/output/nosavequestion", "true");
|
||||
settings.set("user/output/nosavequestion", true);
|
||||
},
|
||||
function() { // No
|
||||
// do nothing; allow user to set a name
|
||||
|
||||
if (question.dontAsk)
|
||||
settings.set("user/output/nosavequestion", "true");
|
||||
settings.set("user/output/nosavequestion", true);
|
||||
},
|
||||
{ showDontAsk: true, yes: "Close", no: "Cancel" });
|
||||
return false;
|
||||
|
|
|
@ -249,8 +249,8 @@ define(function(require, exports, module) {
|
|||
["selectionColor", colors[2]],
|
||||
["antialiasedfonts", colors[3]],
|
||||
["fontfamily", "Ubuntu Mono, Menlo, Consolas, monospace"], // Monaco,
|
||||
["fontsize", "12"],
|
||||
["blinking", "false"],
|
||||
["fontsize", 12],
|
||||
["blinking", false],
|
||||
["scrollback", 1000]
|
||||
]);
|
||||
|
||||
|
|
|
@ -481,10 +481,10 @@ define(function(require, exports, module) {
|
|||
var init = false;
|
||||
settings.on("read", function() {
|
||||
settings.setDefaults("state/projecttree", [
|
||||
["showfs", startEmpty ? "false" : "true"]
|
||||
["showfs", startEmpty ? false : true]
|
||||
]);
|
||||
settings.setDefaults("user/projecttree", [
|
||||
["scope", "false"]
|
||||
["scope", false]
|
||||
]);
|
||||
|
||||
if (settings.getBool("state/projecttree/@showfs"))
|
||||
|
|
|
@ -47,8 +47,8 @@ define(function(require, exports, module) {
|
|||
|
||||
settings.on("read", function(e) {
|
||||
settings.setDefaults("user/general", [
|
||||
["automerge", "false"],
|
||||
["confirmmerge", "true"]
|
||||
["automerge", false],
|
||||
["confirmmerge", true]
|
||||
]);
|
||||
});
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue