Move language info from kernelspec to kernel_info_reply

This commit is contained in:
Thomas Kluyver 2014-10-24 16:24:24 -07:00
parent a58b215421
commit 9c7d73a05e
2 changed files with 25 additions and 15 deletions

View File

@ -207,9 +207,18 @@ define([
}); });
this.events.on('spec_changed.Kernel', function(event, data) { this.events.on('spec_changed.Kernel', function(event, data) {
that.set_kernelspec_metadata(data); that.metadata.kernelspec =
{name: data.name, display_name: data.display_name};
});
this.events.on('kernel_ready.Kernel', function(event, data) {
var kinfo = data.kernel.info_reply
var langinfo = kinfo.language_info || {};
if (!langinfo.name) langinfo.name = kinfo.language;
that.metadata.language_info = langinfo;
// Mode 'null' should be plain, unhighlighted text. // Mode 'null' should be plain, unhighlighted text.
cm_mode = data.codemirror_mode || data.language || 'null' var cm_mode = langinfo.codemirror_mode || langinfo.language || 'null'
that.set_codemirror_mode(cm_mode); that.set_codemirror_mode(cm_mode);
}); });
@ -329,21 +338,11 @@ define([
md: this.metadata, md: this.metadata,
callback: function (md) { callback: function (md) {
that.metadata = md; that.metadata = md;
}, },
name: 'Notebook', name: 'Notebook',
notebook: this, notebook: this,
keyboard_manager: this.keyboard_manager}); keyboard_manager: this.keyboard_manager});
}; };
Notebook.prototype.set_kernelspec_metadata = function(ks) {
var tostore = {};
$.map(ks, function(value, field) {
if (field !== 'argv' && field !== 'env') {
tostore[field] = value;
}
});
this.metadata.kernelspec = tostore;
}
// Cell indexing, retrieval, etc. // Cell indexing, retrieval, etc.
@ -1811,6 +1810,14 @@ define([
this.events.trigger('spec_changed.Kernel', this.metadata.kernelspec); this.events.trigger('spec_changed.Kernel', this.metadata.kernelspec);
} }
// Set the codemirror mode from language_info metadata
if (this.metadata.language_info !== undefined) {
var langinfo = this.metadata.language_info;
// Mode 'null' should be plain, unhighlighted text.
var cm_mode = langinfo.codemirror_mode || langinfo.language || 'null'
this.set_codemirror_mode(cm_mode);
}
// Only handle 1 worksheet for now. // Only handle 1 worksheet for now.
var worksheet = content.worksheets[0]; var worksheet = content.worksheets[0];
if (worksheet !== undefined) { if (worksheet !== undefined) {

View File

@ -46,6 +46,7 @@ define([
this.username = "username"; this.username = "username";
this.session_id = utils.uuid(); this.session_id = utils.uuid();
this._msg_callbacks = {}; this._msg_callbacks = {};
this.info_reply = {}; // kernel_info_reply stored here after starting
if (typeof(WebSocket) !== 'undefined') { if (typeof(WebSocket) !== 'undefined') {
this.WebSocket = WebSocket; this.WebSocket = WebSocket;
@ -398,7 +399,8 @@ define([
this.events.trigger('kernel_starting.Kernel', {kernel: this}); this.events.trigger('kernel_starting.Kernel', {kernel: this});
// get kernel info so we know what state the kernel is in // get kernel info so we know what state the kernel is in
var that = this; var that = this;
this.kernel_info(function () { this.kernel_info(function (reply) {
that.info_reply = reply.content;
that.events.trigger('kernel_ready.Kernel', {kernel: that}); that.events.trigger('kernel_ready.Kernel', {kernel: that});
}); });
}; };
@ -925,7 +927,8 @@ define([
} else if (execution_state === 'starting') { } else if (execution_state === 'starting') {
this.events.trigger('kernel_starting.Kernel', {kernel: this}); this.events.trigger('kernel_starting.Kernel', {kernel: this});
var that = this; var that = this;
this.kernel_info(function () { this.kernel_info(function (reply) {
that.info_reply = reply.content;
that.events.trigger('kernel_ready.Kernel', {kernel: that}); that.events.trigger('kernel_ready.Kernel', {kernel: that});
}); });