Show More
@@ -207,9 +207,18 b' define([' | |||||
207 | }); |
|
207 | }); | |
208 |
|
208 | |||
209 | this.events.on('spec_changed.Kernel', function(event, data) { |
|
209 | this.events.on('spec_changed.Kernel', function(event, data) { | |
210 |
that. |
|
210 | that.metadata.kernelspec = | |
|
211 | {name: data.name, display_name: data.display_name}; | |||
|
212 | }); | |||
|
213 | ||||
|
214 | this.events.on('kernel_ready.Kernel', function(event, data) { | |||
|
215 | var kinfo = data.kernel.info_reply | |||
|
216 | var langinfo = kinfo.language_info || {}; | |||
|
217 | if (!langinfo.name) langinfo.name = kinfo.language; | |||
|
218 | ||||
|
219 | that.metadata.language_info = langinfo; | |||
211 | // Mode 'null' should be plain, unhighlighted text. |
|
220 | // Mode 'null' should be plain, unhighlighted text. | |
212 |
cm_mode = |
|
221 | var cm_mode = langinfo.codemirror_mode || langinfo.language || 'null' | |
213 | that.set_codemirror_mode(cm_mode); |
|
222 | that.set_codemirror_mode(cm_mode); | |
214 | }); |
|
223 | }); | |
215 |
|
224 | |||
@@ -329,21 +338,11 b' define([' | |||||
329 | md: this.metadata, |
|
338 | md: this.metadata, | |
330 | callback: function (md) { |
|
339 | callback: function (md) { | |
331 | that.metadata = md; |
|
340 | that.metadata = md; | |
332 |
}, |
|
341 | }, | |
333 | name: 'Notebook', |
|
342 | name: 'Notebook', | |
334 | notebook: this, |
|
343 | notebook: this, | |
335 | keyboard_manager: this.keyboard_manager}); |
|
344 | keyboard_manager: this.keyboard_manager}); | |
336 | }; |
|
345 | }; | |
337 |
|
||||
338 | Notebook.prototype.set_kernelspec_metadata = function(ks) { |
|
|||
339 | var tostore = {}; |
|
|||
340 | $.map(ks, function(value, field) { |
|
|||
341 | if (field !== 'argv' && field !== 'env') { |
|
|||
342 | tostore[field] = value; |
|
|||
343 | } |
|
|||
344 | }); |
|
|||
345 | this.metadata.kernelspec = tostore; |
|
|||
346 | } |
|
|||
347 |
|
346 | |||
348 | // Cell indexing, retrieval, etc. |
|
347 | // Cell indexing, retrieval, etc. | |
349 |
|
348 | |||
@@ -1811,6 +1810,14 b' define([' | |||||
1811 | this.events.trigger('spec_changed.Kernel', this.metadata.kernelspec); |
|
1810 | this.events.trigger('spec_changed.Kernel', this.metadata.kernelspec); | |
1812 | } |
|
1811 | } | |
1813 |
|
1812 | |||
|
1813 | // Set the codemirror mode from language_info metadata | |||
|
1814 | if (this.metadata.language_info !== undefined) { | |||
|
1815 | var langinfo = this.metadata.language_info; | |||
|
1816 | // Mode 'null' should be plain, unhighlighted text. | |||
|
1817 | var cm_mode = langinfo.codemirror_mode || langinfo.language || 'null' | |||
|
1818 | this.set_codemirror_mode(cm_mode); | |||
|
1819 | } | |||
|
1820 | ||||
1814 | // Only handle 1 worksheet for now. |
|
1821 | // Only handle 1 worksheet for now. | |
1815 | var worksheet = content.worksheets[0]; |
|
1822 | var worksheet = content.worksheets[0]; | |
1816 | if (worksheet !== undefined) { |
|
1823 | if (worksheet !== undefined) { |
@@ -46,6 +46,7 b' define([' | |||||
46 | this.username = "username"; |
|
46 | this.username = "username"; | |
47 | this.session_id = utils.uuid(); |
|
47 | this.session_id = utils.uuid(); | |
48 | this._msg_callbacks = {}; |
|
48 | this._msg_callbacks = {}; | |
|
49 | this.info_reply = {}; // kernel_info_reply stored here after starting | |||
49 |
|
50 | |||
50 | if (typeof(WebSocket) !== 'undefined') { |
|
51 | if (typeof(WebSocket) !== 'undefined') { | |
51 | this.WebSocket = WebSocket; |
|
52 | this.WebSocket = WebSocket; | |
@@ -398,7 +399,8 b' define([' | |||||
398 | this.events.trigger('kernel_starting.Kernel', {kernel: this}); |
|
399 | this.events.trigger('kernel_starting.Kernel', {kernel: this}); | |
399 | // get kernel info so we know what state the kernel is in |
|
400 | // get kernel info so we know what state the kernel is in | |
400 | var that = this; |
|
401 | var that = this; | |
401 | this.kernel_info(function () { |
|
402 | this.kernel_info(function (reply) { | |
|
403 | that.info_reply = reply.content; | |||
402 | that.events.trigger('kernel_ready.Kernel', {kernel: that}); |
|
404 | that.events.trigger('kernel_ready.Kernel', {kernel: that}); | |
403 | }); |
|
405 | }); | |
404 | }; |
|
406 | }; | |
@@ -925,7 +927,8 b' define([' | |||||
925 | } else if (execution_state === 'starting') { |
|
927 | } else if (execution_state === 'starting') { | |
926 | this.events.trigger('kernel_starting.Kernel', {kernel: this}); |
|
928 | this.events.trigger('kernel_starting.Kernel', {kernel: this}); | |
927 | var that = this; |
|
929 | var that = this; | |
928 | this.kernel_info(function () { |
|
930 | this.kernel_info(function (reply) { | |
|
931 | that.info_reply = reply.content; | |||
929 | that.events.trigger('kernel_ready.Kernel', {kernel: that}); |
|
932 | that.events.trigger('kernel_ready.Kernel', {kernel: that}); | |
930 | }); |
|
933 | }); | |
931 |
|
934 |
@@ -36,18 +36,9 b' def _pythonfirst(s):' | |||||
36 | class KernelSpec(HasTraits): |
|
36 | class KernelSpec(HasTraits): | |
37 | argv = List() |
|
37 | argv = List() | |
38 | display_name = Unicode() |
|
38 | display_name = Unicode() | |
39 | language = Unicode() |
|
|||
40 | codemirror_mode = Any() # can be unicode or dict |
|
|||
41 | pygments_lexer = Unicode() |
|
|||
42 | env = Dict() |
|
39 | env = Dict() | |
43 | resource_dir = Unicode() |
|
40 | resource_dir = Unicode() | |
44 |
|
41 | |||
45 | def _codemirror_mode_default(self): |
|
|||
46 | return self.language |
|
|||
47 |
|
||||
48 | def _pygments_lexer_default(self): |
|
|||
49 | return self.language |
|
|||
50 |
|
||||
51 | @classmethod |
|
42 | @classmethod | |
52 | def from_resource_dir(cls, resource_dir): |
|
43 | def from_resource_dir(cls, resource_dir): | |
53 | """Create a KernelSpec object by reading kernel.json |
|
44 | """Create a KernelSpec object by reading kernel.json | |
@@ -63,12 +54,7 b' class KernelSpec(HasTraits):' | |||||
63 | d = dict(argv=self.argv, |
|
54 | d = dict(argv=self.argv, | |
64 | env=self.env, |
|
55 | env=self.env, | |
65 | display_name=self.display_name, |
|
56 | display_name=self.display_name, | |
66 | language=self.language, |
|
|||
67 | ) |
|
57 | ) | |
68 | if self.codemirror_mode != self.language: |
|
|||
69 | d['codemirror_mode'] = self.codemirror_mode |
|
|||
70 | if self.pygments_lexer != self.language: |
|
|||
71 | d['pygments_lexer'] = self.pygments_lexer |
|
|||
72 |
|
58 | |||
73 | return d |
|
59 | return d | |
74 |
|
60 | |||
@@ -118,12 +104,8 b' class KernelSpecManager(HasTraits):' | |||||
118 | process. This will put its informatino in the user kernels directory. |
|
104 | process. This will put its informatino in the user kernels directory. | |
119 | """ |
|
105 | """ | |
120 | return {'argv': make_ipkernel_cmd(), |
|
106 | return {'argv': make_ipkernel_cmd(), | |
121 | 'display_name': 'IPython (Python %d)' % (3 if PY3 else 2), |
|
107 | 'display_name': 'IPython (Python %d)' % (3 if PY3 else 2), | |
122 | 'language': 'python', |
|
108 | } | |
123 | 'codemirror_mode': {'name': 'ipython', |
|
|||
124 | 'version': sys.version_info[0]}, |
|
|||
125 | 'pygments_lexer': 'ipython%d' % (3 if PY3 else 2), |
|
|||
126 | } |
|
|||
127 |
|
109 | |||
128 | @property |
|
110 | @property | |
129 | def _native_kernel_resource_dir(self): |
|
111 | def _native_kernel_resource_dir(self): |
@@ -68,6 +68,11 b' class IPythonKernel(KernelBase):' | |||||
68 | implementation_version = release.version |
|
68 | implementation_version = release.version | |
69 | language = 'python' |
|
69 | language = 'python' | |
70 | language_version = sys.version.split()[0] |
|
70 | language_version = sys.version.split()[0] | |
|
71 | language_info = {'mimetype': 'text/x-python', | |||
|
72 | 'codemirror_mode': {'name': 'ipython', | |||
|
73 | 'version': sys.version_info[0]}, | |||
|
74 | 'pygments_lexer': 'ipython%d' % (3 if PY3 else 2), | |||
|
75 | } | |||
71 | @property |
|
76 | @property | |
72 | def banner(self): |
|
77 | def banner(self): | |
73 | return self.shell.banner |
|
78 | return self.shell.banner |
@@ -60,6 +60,10 b' class Kernel(SingletonConfigurable):' | |||||
60 | def _ident_default(self): |
|
60 | def _ident_default(self): | |
61 | return unicode_type(uuid.uuid4()) |
|
61 | return unicode_type(uuid.uuid4()) | |
62 |
|
62 | |||
|
63 | # This should be overridden by wrapper kernels that implement any real | |||
|
64 | # language. | |||
|
65 | language_info = {} | |||
|
66 | ||||
63 | # Private interface |
|
67 | # Private interface | |
64 |
|
68 | |||
65 | _darwin_app_nap = Bool(True, config=True, |
|
69 | _darwin_app_nap = Bool(True, config=True, | |
@@ -453,6 +457,7 b' class Kernel(SingletonConfigurable):' | |||||
453 | 'implementation_version': self.implementation_version, |
|
457 | 'implementation_version': self.implementation_version, | |
454 | 'language': self.language, |
|
458 | 'language': self.language, | |
455 | 'language_version': self.language_version, |
|
459 | 'language_version': self.language_version, | |
|
460 | 'language_info': self.language_info, | |||
456 | 'banner': self.banner, |
|
461 | 'banner': self.banner, | |
457 | } |
|
462 | } | |
458 |
|
463 |
General Comments 0
You need to be logged in to leave comments.
Login now