From 9c7d73a05ec67900657c35bd26a106be44752b40 Mon Sep 17 00:00:00 2001 From: Thomas Kluyver Date: Fri, 24 Oct 2014 16:24:24 -0700 Subject: [PATCH] Move language info from kernelspec to kernel_info_reply --- IPython/html/static/notebook/js/notebook.js | 33 +++++++++++-------- .../html/static/services/kernels/kernel.js | 7 ++-- 2 files changed, 25 insertions(+), 15 deletions(-) diff --git a/IPython/html/static/notebook/js/notebook.js b/IPython/html/static/notebook/js/notebook.js index 3b03d7c1b..9c151be95 100644 --- a/IPython/html/static/notebook/js/notebook.js +++ b/IPython/html/static/notebook/js/notebook.js @@ -207,9 +207,18 @@ define([ }); 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. - cm_mode = data.codemirror_mode || data.language || 'null' + var cm_mode = langinfo.codemirror_mode || langinfo.language || 'null' that.set_codemirror_mode(cm_mode); }); @@ -329,21 +338,11 @@ define([ md: this.metadata, callback: function (md) { that.metadata = md; - }, + }, name: 'Notebook', notebook: this, 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. @@ -1811,6 +1810,14 @@ define([ 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. var worksheet = content.worksheets[0]; if (worksheet !== undefined) { diff --git a/IPython/html/static/services/kernels/kernel.js b/IPython/html/static/services/kernels/kernel.js index 9ad4fcb00..38ac473a8 100644 --- a/IPython/html/static/services/kernels/kernel.js +++ b/IPython/html/static/services/kernels/kernel.js @@ -46,6 +46,7 @@ define([ this.username = "username"; this.session_id = utils.uuid(); this._msg_callbacks = {}; + this.info_reply = {}; // kernel_info_reply stored here after starting if (typeof(WebSocket) !== 'undefined') { this.WebSocket = WebSocket; @@ -398,7 +399,8 @@ define([ this.events.trigger('kernel_starting.Kernel', {kernel: this}); // get kernel info so we know what state the kernel is in 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}); }); }; @@ -925,7 +927,8 @@ define([ } else if (execution_state === 'starting') { this.events.trigger('kernel_starting.Kernel', {kernel: 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}); });