diff --git a/IPython/html/static/services/config.js b/IPython/html/static/services/config.js
index 0d9d559..0d2a9f9 100644
--- a/IPython/html/static/services/config.js
+++ b/IPython/html/static/services/config.js
@@ -48,7 +48,14 @@ function($, utils) {
});
};
+ /**
+ * Modify the config values stored. Update the local data immediately,
+ * send the change to the server, and use the updated data from the server
+ * when the reply comes.
+ */
ConfigSection.prototype.update = function(newdata) {
+ $.extend(true, this.data, newdata); // true -> recursive update
+
var that = this;
return utils.promising_ajax(this.api_url(), {
processData: false,
@@ -97,6 +104,24 @@ function($, utils) {
return this._class_data()[key] || this.defaults[key];
};
+ /**
+ * Set a config value. Send the update to the server, and change our
+ * local copy of the data immediately.
+ * Returns a promise which is fulfilled when the server replies to the
+ * change.
+ */
+ ConfigWithDefaults.prototype.set = function(key, value) {
+ var d = {};
+ d[key] = value;
+ if (this.classname) {
+ var d2 = {};
+ d2[this.classname] = d;
+ return this.section.update(d2);
+ } else {
+ return this.section.update(d);
+ }
+ };
+
return {ConfigSection: ConfigSection,
ConfigWithDefaults: ConfigWithDefaults,
};
diff --git a/IPython/html/tests/notebook/dualmode_cellinsert.js b/IPython/html/tests/notebook/dualmode_cellinsert.js
index 1764042..093f5b6 100644
--- a/IPython/html/tests/notebook/dualmode_cellinsert.js
+++ b/IPython/html/tests/notebook/dualmode_cellinsert.js
@@ -33,7 +33,7 @@ casper.notebook_test(function () {
});
this.thenEvaluate(function() {
- IPython.notebook.default_cell_type = 'selected';
+ IPython.notebook.class_config.set('default_cell_type', 'selected');
});
this.then(function () {
@@ -47,7 +47,7 @@ casper.notebook_test(function () {
});
this.thenEvaluate(function() {
- IPython.notebook.default_cell_type = 'above';
+ IPython.notebook.class_config.set('default_cell_type', 'above');
});
this.then(function () {
@@ -61,7 +61,7 @@ casper.notebook_test(function () {
});
this.thenEvaluate(function() {
- IPython.notebook.default_cell_type = 'below';
+ IPython.notebook.class_config.set('default_cell_type', 'below');
});
this.then(function () {