@@ -8,7 +8,8 @@ import { type HighlightColors, LensDecorations } from './decorations'
88import { ImportResolver , type SourceHost } from './resolver'
99
1010const SUPPORTED_LANGUAGE_IDS = new Set ( [ 'javascriptreact' , 'typescriptreact' ] )
11- const WATCH_PATTERNS = [ '**/*.{js,jsx,ts,tsx}' , '**/{tsconfig,jsconfig}.json' ]
11+ const SOURCE_WATCH_PATTERN = '**/*.{js,jsx,ts,tsx}'
12+ const CONFIG_WATCH_PATTERN = '**/{tsconfig,jsconfig}.json'
1213const DEFAULT_HIGHLIGHT_COLORS : HighlightColors = {
1314 clientComponent : '#14b8a6' ,
1415 serverComponent : '#f59e0b' ,
@@ -64,6 +65,29 @@ export function activate(context: vscode.ExtensionContext): void {
6465 decorations . apply ( editor , usages )
6566 }
6667
68+ const createWatcher = (
69+ folder : vscode . WorkspaceFolder ,
70+ pattern : string ,
71+ onChange : ( uri : vscode . Uri ) => void ,
72+ ) : void => {
73+ const watcher = vscode . workspace . createFileSystemWatcher (
74+ new vscode . RelativePattern ( folder , pattern ) ,
75+ )
76+ watcher . onDidChange ( onChange , undefined , context . subscriptions )
77+ watcher . onDidCreate (
78+ ( ) => clearCachesAndRefresh ( ) ,
79+ undefined ,
80+ context . subscriptions ,
81+ )
82+ watcher . onDidDelete (
83+ ( ) => clearCachesAndRefresh ( ) ,
84+ undefined ,
85+ context . subscriptions ,
86+ )
87+ watcherDisposables . push ( watcher )
88+ context . subscriptions . push ( watcher )
89+ }
90+
6791 const registerWatchers = ( ) : void => {
6892 for ( const disposable of watcherDisposables ) {
6993 disposable . dispose ( )
@@ -72,28 +96,13 @@ export function activate(context: vscode.ExtensionContext): void {
7296 watcherDisposables = [ ]
7397
7498 for ( const workspaceFolder of vscode . workspace . workspaceFolders ?? [ ] ) {
75- for ( const pattern of WATCH_PATTERNS ) {
76- const watcher = vscode . workspace . createFileSystemWatcher (
77- new vscode . RelativePattern ( workspaceFolder , pattern ) ,
78- )
79- watcher . onDidChange (
80- ( ) => clearCachesAndRefresh ( ) ,
81- undefined ,
82- context . subscriptions ,
83- )
84- watcher . onDidCreate (
85- ( ) => clearCachesAndRefresh ( ) ,
86- undefined ,
87- context . subscriptions ,
88- )
89- watcher . onDidDelete (
90- ( ) => clearCachesAndRefresh ( ) ,
91- undefined ,
92- context . subscriptions ,
93- )
94- watcherDisposables . push ( watcher )
95- context . subscriptions . push ( watcher )
96- }
99+ createWatcher ( workspaceFolder , SOURCE_WATCH_PATTERN , ( uri ) => {
100+ analyzer . invalidateFile ( uri . fsPath )
101+ scheduleRefresh ( )
102+ } )
103+ createWatcher ( workspaceFolder , CONFIG_WATCH_PATTERN , ( ) =>
104+ clearCachesAndRefresh ( ) ,
105+ )
97106 }
98107 }
99108
0 commit comments