@@ -51,7 +51,7 @@ defmodule Expert.State do
51
51
_ -> nil
52
52
end
53
53
54
- root_path = Forge. Document.Path. from_uri ( event . root_uri )
54
+ root_path = Document.Path . from_uri ( event . root_uri )
55
55
56
56
root_path
57
57
|> Forge.Workspace . new ( )
@@ -126,8 +126,19 @@ defmodule Expert.State do
126
126
removed_projects =
127
127
for % { uri: uri } <- removed do
128
128
project = Project . new ( uri )
129
- Logger . info ( "Stopping project at uri #{ uri } " )
129
+
130
130
Expert.Project.Supervisor . stop ( project )
131
+
132
+ GenLSP . notify (
133
+ Expert . get_lsp ( ) ,
134
+ % GenLSP.Notifications.WindowLogMessage {
135
+ params: % GenLSP.Structures.LogMessageParams {
136
+ type: GenLSP.Enumerations.MessageType . info ( ) ,
137
+ message: "Stopping project node for #{ Project . name ( project ) } "
138
+ }
139
+ }
140
+ )
141
+
131
142
project
132
143
end
133
144
@@ -138,10 +149,8 @@ defmodule Expert.State do
138
149
project
139
150
end
140
151
141
- projects =
142
- Enum . uniq ( ( added_projects ++ ActiveProjects . projects ( ) ) -- removed_projects )
143
-
144
- ActiveProjects . set_projects ( projects )
152
+ ActiveProjects . add_projects ( added_projects )
153
+ ActiveProjects . remove_projects ( removed_projects )
145
154
146
155
state = % __MODULE__ { state | workspace_folders: workspace_folders }
147
156
@@ -188,12 +197,8 @@ defmodule Expert.State do
188
197
config = state . configuration
189
198
190
199
project =
191
- case Enum . find ( ActiveProjects . projects ( ) , & Project . within_project? ( & 1 , uri ) ) do
192
- nil ->
193
- Project . find_project ( uri )
194
-
195
- project ->
196
- project
200
+ with nil <- Enum . find ( ActiveProjects . projects ( ) , & Project . within_project? ( & 1 , uri ) ) do
201
+ Project . find_project ( uri )
197
202
end
198
203
199
204
if project do
@@ -203,11 +208,10 @@ defmodule Expert.State do
203
208
204
209
case Document.Store . open ( uri , text , version , language_id ) do
205
210
:ok ->
206
- Logger . info ( "################### opened #{ uri } " )
207
211
{ :ok , % { state | configuration: config } }
208
212
209
213
error ->
210
- Logger . error ( "################## Could not open #{ uri } #{ inspect ( error ) } " )
214
+ Logger . error ( "Could not open #{ uri } #{ inspect ( error ) } " )
211
215
error
212
216
end
213
217
end
@@ -274,13 +278,35 @@ defmodule Expert.State do
274
278
{ :ok , _pid } ->
275
279
Logger . info ( "Project node started for #{ Project . name ( project ) } " )
276
280
281
+ GenLSP . notify (
282
+ Expert . get_lsp ( ) ,
283
+ % GenLSP.Notifications.WindowLogMessage {
284
+ params: % GenLSP.Structures.LogMessageParams {
285
+ type: GenLSP.Enumerations.MessageType . info ( ) ,
286
+ message: "Started project node for #{ Project . name ( project ) } "
287
+ }
288
+ }
289
+ )
290
+
277
291
{ :error , { reason , pid } } when reason in [ :already_started , :already_present ] ->
278
292
{ :ok , pid }
279
293
280
294
{ :error , reason } ->
281
295
Logger . error (
282
296
"Failed to start project node for #{ Project . name ( project ) } : #{ inspect ( reason , pretty: true ) } "
283
297
)
298
+
299
+ GenLSP . notify (
300
+ Expert . get_lsp ( ) ,
301
+ % GenLSP.Notifications.WindowLogMessage {
302
+ params: % GenLSP.Structures.LogMessageParams {
303
+ type: GenLSP.Enumerations.MessageType . error ( ) ,
304
+ message: "Failed to start project node for #{ Project . name ( project ) } "
305
+ }
306
+ }
307
+ )
308
+
309
+ { :error , reason }
284
310
end
285
311
end
286
312
0 commit comments