1+ import { Disposable } from '@hediet/std/disposable'
12import { EventEmitter , Event , workspace } from 'vscode'
23import {
34 getOnDidChangePythonExecutionDetails ,
45 getPythonBinPath
56} from './extensions/python'
67import { ConfigKey , getConfigValue } from './vscode/config'
78import { DeferredDisposable } from './class/deferred'
9+ import { getOnDidChangeExtensions } from './vscode/extensions'
810
911export class Config extends DeferredDisposable {
1012 public readonly onDidChangeExecutionDetails : Event < void >
@@ -15,15 +17,20 @@ export class Config extends DeferredDisposable {
1517
1618 private readonly executionDetailsChanged : EventEmitter < void >
1719
18- constructor ( ) {
20+ private pythonExecutionDetailsListener ?: Disposable
21+ private readonly onDidChangeExtensionsEvent : Event < void >
22+
23+ constructor ( onDidChangeExtensionsEvent = getOnDidChangeExtensions ( ) ) {
1924 super ( )
2025
2126 this . executionDetailsChanged = this . dispose . track ( new EventEmitter ( ) )
2227 this . onDidChangeExecutionDetails = this . executionDetailsChanged . event
28+ this . onDidChangeExtensionsEvent = onDidChangeExtensionsEvent
2329
2430 this . setPythonBinPath ( )
2531
2632 this . onDidChangePythonExecutionDetails ( )
33+ this . onDidChangeExtensions ( )
2734
2835 this . onDidConfigurationChange ( )
2936 }
@@ -46,15 +53,25 @@ export class Config extends DeferredDisposable {
4653 }
4754
4855 private async onDidChangePythonExecutionDetails ( ) {
56+ this . pythonExecutionDetailsListener ?. dispose ( )
4957 const onDidChangePythonExecutionDetails =
5058 await getOnDidChangePythonExecutionDetails ( )
51- this . dispose . track (
59+ this . pythonExecutionDetailsListener = this . dispose . track (
5260 onDidChangePythonExecutionDetails ?.( ( ) => {
5361 this . setPythonAndNotifyIfChanged ( )
5462 } )
5563 )
5664 }
5765
66+ private onDidChangeExtensions ( ) {
67+ this . dispose . track (
68+ this . onDidChangeExtensionsEvent ( ( ) => {
69+ this . onDidChangePythonExecutionDetails ( )
70+ this . setPythonAndNotifyIfChanged ( )
71+ } )
72+ )
73+ }
74+
5875 private onDidConfigurationChange ( ) {
5976 this . dispose . track (
6077 workspace . onDidChangeConfiguration ( e => {
0 commit comments