3
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
4
*--------------------------------------------------------------------------------------------*/
5
5
6
- import { Disposable } from 'vs/base/common/lifecycle' ;
6
+ import { Disposable , DisposableStore } from 'vs/base/common/lifecycle' ;
7
7
import { ICodeEditor } from 'vs/editor/browser/editorBrowser' ;
8
8
import { ConfigurationTarget } from 'vs/platform/configuration/common/configuration' ;
9
9
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation' ;
@@ -15,7 +15,8 @@ import { SettingsEditorModel } from 'vs/workbench/services/preferences/common/pr
15
15
export class SettingsEditorContribution extends Disposable {
16
16
static readonly ID : string = 'editor.contrib.settings' ;
17
17
18
- private _currentRenderer : IPreferencesRenderer | undefined ;
18
+ private currentRenderer : IPreferencesRenderer | undefined ;
19
+ private readonly disposables = this . _register ( new DisposableStore ( ) ) ;
19
20
20
21
constructor (
21
22
private readonly editor : ICodeEditor ,
@@ -30,24 +31,25 @@ export class SettingsEditorContribution extends Disposable {
30
31
}
31
32
32
33
private async _createPreferencesRenderer ( ) : Promise < void > {
33
- this . _currentRenderer ?. dispose ( ) ;
34
- this . _currentRenderer = undefined ;
34
+ this . disposables . clear ( ) ;
35
+ this . currentRenderer = undefined ;
35
36
36
37
const model = this . editor . getModel ( ) ;
37
38
if ( model ) {
38
39
const settingsModel = await this . preferencesService . createPreferencesEditorModel ( model . uri ) ;
39
40
if ( settingsModel instanceof SettingsEditorModel && this . editor . getModel ( ) ) {
41
+ this . disposables . add ( settingsModel ) ;
40
42
switch ( settingsModel . configurationTarget ) {
41
43
case ConfigurationTarget . WORKSPACE :
42
- this . _currentRenderer = this . instantiationService . createInstance ( WorkspaceSettingsRenderer , this . editor , settingsModel ) ;
44
+ this . currentRenderer = this . disposables . add ( this . instantiationService . createInstance ( WorkspaceSettingsRenderer , this . editor , settingsModel ) ) ;
43
45
break ;
44
46
default :
45
- this . _currentRenderer = this . instantiationService . createInstance ( UserSettingsRenderer , this . editor , settingsModel ) ;
47
+ this . currentRenderer = this . disposables . add ( this . instantiationService . createInstance ( UserSettingsRenderer , this . editor , settingsModel ) ) ;
46
48
break ;
47
49
}
48
50
}
49
51
50
- this . _currentRenderer ?. render ( ) ;
52
+ this . currentRenderer ?. render ( ) ;
51
53
}
52
54
}
53
55
}
0 commit comments