@@ -59,30 +59,46 @@ export class PromptFilesLocator extends Disposable {
5959 }
6060
6161 public createFilesUpdatedEvent ( type : PromptsType ) : { readonly event : Event < void > ; dispose : ( ) => void } {
62- const disoposables = new DisposableStore ( ) ;
63- const eventEmitter = disoposables . add ( new Emitter < void > ( ) ) ;
64- const key = getPromptFileLocationsConfigKey ( type ) ;
62+ const disposables = new DisposableStore ( ) ;
63+ const eventEmitter = disposables . add ( new Emitter < void > ( ) ) ;
64+
6565 const userDataFolder = this . userDataService . currentProfile . promptsHome ;
6666
67- let parentFolders = this . getLocalParentFolders ( type ) . map ( folder => folder . parent ) ;
68- disoposables . add ( this . configService . onDidChangeConfiguration ( e => {
67+ const key = getPromptFileLocationsConfigKey ( type ) ;
68+ let parentFolders = this . getLocalParentFolders ( type ) ;
69+
70+ const externalFolderWatchers = disposables . add ( new DisposableStore ( ) ) ;
71+ const updateExternalFolderWatchers = ( ) => {
72+ externalFolderWatchers . clear ( ) ;
73+ for ( const folder of parentFolders ) {
74+ if ( ! this . workspaceService . getWorkspaceFolder ( folder . parent ) ) {
75+ // if the folder is not part of the workspace, we need to watch it
76+ const recursive = folder . filePattern !== undefined ;
77+ externalFolderWatchers . add ( this . fileService . watch ( folder . parent , { recursive, excludes : [ ] } ) ) ;
78+ }
79+ }
80+ } ;
81+ updateExternalFolderWatchers ( ) ;
82+ disposables . add ( this . configService . onDidChangeConfiguration ( e => {
6983 if ( e . affectsConfiguration ( key ) ) {
70- parentFolders = this . getLocalParentFolders ( type ) . map ( folder => folder . parent ) ;
84+ parentFolders = this . getLocalParentFolders ( type ) ;
85+ updateExternalFolderWatchers ( ) ;
7186 eventEmitter . fire ( ) ;
7287 }
7388 } ) ) ;
74- disoposables . add ( this . fileService . onDidFilesChange ( e => {
89+ disposables . add ( this . fileService . onDidFilesChange ( e => {
7590 if ( e . contains ( userDataFolder ) ) {
7691 eventEmitter . fire ( ) ;
7792 return ;
7893 }
79- if ( parentFolders . some ( folder => e . affects ( folder ) ) ) {
94+ if ( parentFolders . some ( folder => folder . filePattern !== undefined ? e . affects ( folder . parent ) : e . contains ( folder . parent ) ) ) {
8095 eventEmitter . fire ( ) ;
8196 return ;
8297 }
8398 } ) ) ;
84- disoposables . add ( this . fileService . watch ( userDataFolder ) ) ;
85- return { event : eventEmitter . event , dispose : ( ) => disoposables . dispose ( ) } ;
99+ disposables . add ( this . fileService . watch ( userDataFolder ) ) ;
100+
101+ return { event : eventEmitter . event , dispose : ( ) => disposables . dispose ( ) } ;
86102 }
87103
88104 /**
0 commit comments