@@ -35,6 +35,7 @@ export function createLanguageServer(
35
35
) {
36
36
37
37
let clientCapabilities : vscode . ClientCapabilities ;
38
+ let projects : ReturnType < typeof createProjects > ;
38
39
39
40
connection . onInitialize ( async params => {
40
41
@@ -81,10 +82,9 @@ export function createLanguageServer(
81
82
if ( options . languageFeatures ) {
82
83
83
84
const tsLocalized = runtimeEnv . loadTypescriptLocalized ( options ) ;
84
- const projects = createProjects (
85
+ projects = createProjects (
85
86
runtimeEnv ,
86
87
languageConfigs ,
87
- folders ,
88
88
ts ,
89
89
tsLocalized ,
90
90
options ,
@@ -95,6 +95,10 @@ export function createLanguageServer(
95
95
params . capabilities ,
96
96
) ;
97
97
98
+ for ( const root of folders ) {
99
+ projects . addRoot ( root ) ;
100
+ }
101
+
98
102
( await import ( './features/customFeatures' ) ) . register ( connection , projects ) ;
99
103
( await import ( './features/languageFeatures' ) ) . register ( connection , projects , options . languageFeatures , params ) ;
100
104
( await import ( './registers/registerlanguageFeatures' ) ) . register ( options . languageFeatures ! , vue . getSemanticTokenLegend ( ) , result . capabilities , languageConfigs ) ;
@@ -103,9 +107,23 @@ export function createLanguageServer(
103
107
return result ;
104
108
} ) ;
105
109
connection . onInitialized ( ( ) => {
110
+
106
111
if ( clientCapabilities . workspace ?. didChangeConfiguration ?. dynamicRegistration ) { // TODO
107
112
connection . client . register ( vscode . DidChangeConfigurationNotification . type ) ;
108
113
}
114
+
115
+ connection . workspace . onDidChangeWorkspaceFolders ( e => {
116
+
117
+ const added = e . added . map ( folder => URI . parse ( folder . uri ) ) . filter ( uri => uri . scheme === 'file' ) . map ( uri => uri . fsPath ) ;
118
+ const removed = e . removed . map ( folder => URI . parse ( folder . uri ) ) . filter ( uri => uri . scheme === 'file' ) . map ( uri => uri . fsPath ) ;
119
+
120
+ for ( const folder of added ) {
121
+ projects . addRoot ( folder ) ;
122
+ }
123
+ for ( const folder of removed ) {
124
+ projects . removeRoot ( folder ) ;
125
+ }
126
+ } ) ;
109
127
} ) ;
110
128
connection . listen ( ) ;
111
129
0 commit comments