@@ -163,7 +163,8 @@ def _dequeue_listener_async(self) -> None:
163
163
listener = self ._pending_listeners .pop ()
164
164
if not listener .view .is_valid ():
165
165
# debug("listener", listener, "is no longer valid")
166
- return self ._dequeue_listener_async ()
166
+ self ._dequeue_listener_async ()
167
+ return
167
168
# debug("adding new pending listener", listener)
168
169
self ._listeners .add (listener )
169
170
except IndexError :
@@ -269,7 +270,8 @@ def start_async(self, config: ClientConfig, initiating_view: sublime.View) -> No
269
270
# Continue with handling pending listeners
270
271
self ._new_session = None
271
272
sublime .set_timeout_async (self ._dequeue_listener_async )
272
- return self ._window .status_message (message )
273
+ self ._window .status_message (message )
274
+ return
273
275
cwd = plugin_class .on_pre_start (self ._window , initiating_view , workspace_folders , config )
274
276
config .set_view_status (initiating_view , "starting..." )
275
277
session = Session (self , self ._create_logger (config .name ), workspace_folders , config , plugin_class )
@@ -341,17 +343,17 @@ def handle_message_request(self, session: Session, params: Any, request_id: Any)
341
343
if view :
342
344
MessageRequestHandler (view , session , request_id , params , session .config .name ).show ()
343
345
344
- def restart_sessions_async (self , config_name : str | None = None ) -> None :
345
- self ._end_sessions_async (config_name )
346
+ def restart_sessions_async (self , config_names : list [ str ] ) -> None :
347
+ self ._end_sessions_async (config_names )
346
348
listeners = list (self ._listeners )
347
349
self ._listeners .clear ()
348
350
for listener in listeners :
349
351
self .register_listener_async (listener )
350
352
351
- def _end_sessions_async (self , config_name : str | None = None ) -> None :
353
+ def _end_sessions_async (self , config_names : list [ str ] | None = None ) -> None :
352
354
sessions = list (self ._sessions )
353
355
for session in sessions :
354
- if config_name is None or config_name == session .config .name :
356
+ if config_names is None or session .config .name in config_names :
355
357
session .end_async ()
356
358
self ._sessions .discard (session )
357
359
@@ -515,8 +517,9 @@ def _update_panel_main_thread(self, characters: str, prephantoms: list[tuple[int
515
517
516
518
# --- Implements WindowConfigChangeListener ------------------------------------------------------------------------
517
519
518
- def on_configs_changed (self , config_name : str | None = None ) -> None :
519
- sublime .set_timeout_async (lambda : self .restart_sessions_async (config_name ))
520
+ def on_configs_changed (self , configs : list [ClientConfig ]) -> None :
521
+ config_names = [config .name for config in configs ]
522
+ sublime .set_timeout_async (lambda : self .restart_sessions_async (config_names ))
520
523
521
524
522
525
class WindowRegistry (LspSettingsChangeListener ):
0 commit comments