@@ -9,13 +9,14 @@ import {ZMQKernel} from './zmq-kernel';
99import { launchSpec } from 'spawnteract' ;
1010import { KernelspecMetadata , Kernelspec } from './contracts' ;
1111import { Commands } from '../common/constants' ;
12+ import { EventEmitter } from 'events' ;
1213
13- export class KernelManagerImpl extends vscode . Disposable {
14+ export class KernelManagerImpl extends EventEmitter {
1415 private _runningKernels : Map < string , Kernel > ;
1516 private _kernelSpecs : { [ key : string ] : Kernelspec } ;
1617 private disposables : vscode . Disposable [ ] ;
1718 constructor ( private outputChannel : vscode . OutputChannel ) {
18- super ( ( ) => { } ) ;
19+ super ( ) ;
1920 this . disposables = [ ] ;
2021 this . _runningKernels = new Map < string , Kernel > ( ) ;
2122 this . _kernelSpecs = this . getKernelSpecsFromSettings ( ) ;
@@ -24,6 +25,7 @@ export class KernelManagerImpl extends vscode.Disposable {
2425
2526 private registerCommands ( ) {
2627 this . disposables . push ( vscode . commands . registerCommand ( Commands . Jupyter . Get_All_KernelSpecs_For_Language , this . getAllKernelSpecsFor . bind ( this ) ) ) ;
28+ this . disposables . push ( vscode . commands . registerCommand ( Commands . Jupyter . StartKernelForKernelSpeck , this . startKernel . bind ( this ) ) ) ;
2729 }
2830 public dispose ( ) {
2931 this . _runningKernels . forEach ( kernel => {
@@ -35,6 +37,7 @@ export class KernelManagerImpl extends vscode.Disposable {
3537 public setRunningKernelFor ( language : string , kernel : Kernel ) {
3638 kernel . kernelSpec . language = language ;
3739 this . _runningKernels . set ( language , kernel ) ;
40+ this . emit ( 'kernelChanged' , kernel , language ) ;
3841 return kernel ;
3942 }
4043
@@ -114,10 +117,11 @@ export class KernelManagerImpl extends vscode.Disposable {
114117 }
115118
116119 public startKernel ( kernelSpec : KernelspecMetadata , language : string ) : Promise < Kernel > {
117- // console.log('KernelManager: startKernelFor:', language);
118- const projectPath = path . dirname ( vscode . window . activeTextEditor . document . fileName ) ;
120+ this . destroyRunningKernelFor ( language ) ;
121+ // This doesn't always work
122+ // const projectPath = path.dirname(vscode.window.activeTextEditor.document.fileName);
119123 const spawnOptions = {
120- cwd : projectPath
124+ cwd : vscode . workspace . rootPath
121125 } ;
122126 return launchSpec ( kernelSpec , spawnOptions ) . then ( result => {
123127 const kernel = new ZMQKernel ( kernelSpec , language , result . config , result . connectionFile , result . spawn ) ;
0 commit comments