1- import { commands , type ExtensionContext , workspace } from 'vscode' ;
1+ import { commands , type Disposable , type ExtensionContext , workspace } from 'vscode' ;
22
33import { createPackageJsonDependencyAnnotator } from './annotatePackageJson' ;
4+ import { CONFIG_KEY } from './constants' ;
45import { createSearchQuickPickHandler } from './createSearchQuickPickHandler' ;
56import { detectPackageManager } from './detectPackageManager' ;
67
@@ -14,7 +15,42 @@ export async function activate(context: ExtensionContext) {
1415 : manager ;
1516
1617 context . subscriptions . push (
17- commands . registerCommand ( 'extension.showQuickPick' , createSearchQuickPickHandler ( preferredManager , workspacePath ) ) ,
18- createPackageJsonDependencyAnnotator ( )
18+ commands . registerCommand ( 'extension.showQuickPick' , createSearchQuickPickHandler ( preferredManager , workspacePath ) )
1919 ) ;
20+
21+ const annotatePackageJson =
22+ workspace . getConfiguration ( CONFIG_KEY ) . get < boolean > ( 'enablePackageJsonAnnotations' ) ?? true ;
23+
24+ let annotatorDisposable : Disposable | undefined ;
25+
26+ function enableAnnotator ( ) {
27+ if ( ! annotatorDisposable ) {
28+ annotatorDisposable = createPackageJsonDependencyAnnotator ( ) ;
29+ context . subscriptions . push ( annotatorDisposable ) ;
30+ }
31+ }
32+
33+ function disableAnnotator ( ) {
34+ if ( annotatorDisposable ) {
35+ annotatorDisposable . dispose ( ) ;
36+ annotatorDisposable = undefined ;
37+ }
38+ }
39+
40+ if ( annotatePackageJson ) {
41+ enableAnnotator ( ) ;
42+ }
43+
44+ const configChangeDisposable = workspace . onDidChangeConfiguration ( event => {
45+ if ( event . affectsConfiguration ( `${ CONFIG_KEY } .enablePackageJsonAnnotations` ) ) {
46+ const enabled = workspace . getConfiguration ( CONFIG_KEY ) . get < boolean > ( 'enablePackageJsonAnnotations' ) ?? true ;
47+ if ( enabled ) {
48+ enableAnnotator ( ) ;
49+ } else {
50+ disableAnnotator ( ) ;
51+ }
52+ }
53+ } ) ;
54+
55+ context . subscriptions . push ( configChangeDisposable ) ;
2056}
0 commit comments