1616)
1717
1818from ....jsonrpc2 .protocol import JsonRPCException , rpc_method
19- from ....utils .async_tools import Lock , async_event , async_tasking_event
19+ from ....utils .async_tools import (
20+ Lock ,
21+ async_event ,
22+ async_tasking_event ,
23+ create_sub_task ,
24+ )
2025from ....utils .logging import LoggingDescriptor
2126from ....utils .uri import Uri
2227from ..decorators import language_id_filter
@@ -91,20 +96,28 @@ async def _file_watcher(self, sender: Any, changes: List[FileEvent]) -> None:
9196
9297 for change in to_change .values ():
9398 if change .type == FileChangeType .CREATED :
94- await self .did_create_uri (self , change .uri )
99+ create_sub_task ( self .did_create_uri (self , change .uri ), loop = self . parent . loop )
95100
96101 document = self ._documents .get (DocumentUri (Uri (change .uri ).normalized ()), None )
97102 if document is not None and change .type == FileChangeType .CREATED :
98- await self .did_create (self , document , callback_filter = language_id_filter (document ))
103+ create_sub_task (
104+ self .did_create (self , document , callback_filter = language_id_filter (document )), loop = self .parent .loop
105+ )
99106 elif document is not None and not document .opened_in_editor :
100107 if change .type == FileChangeType .DELETED :
101108 await self .close_document (document , True )
102- await self .did_close (self , document , callback_filter = language_id_filter (document ))
109+ create_sub_task (
110+ self .did_close (self , document , callback_filter = language_id_filter (document )),
111+ loop = self .parent .loop ,
112+ )
103113 elif change .type == FileChangeType .CHANGED :
104114 await document .apply_full_change (
105115 None , await self .read_document_text (document .uri , language_id_filter (document )), save = True
106116 )
107- await self .did_change (self , document , callback_filter = language_id_filter (document ))
117+ create_sub_task (
118+ self .did_change (self , document , callback_filter = language_id_filter (document )),
119+ loop = self .parent .loop ,
120+ )
108121
109122 async def read_document_text (self , uri : Uri , language_id : Union [str , Callable [[Any ], bool ]]) -> str :
110123 for e in await self .on_read_document_text (
@@ -212,7 +225,10 @@ async def append_document(
212225
213226 self ._documents [document_uri ] = document
214227
215- await self .did_append_document (self , document , callback_filter = language_id_filter (document ))
228+ create_sub_task (
229+ self .did_append_document (self , document , callback_filter = language_id_filter (document )),
230+ loop = self .parent .loop ,
231+ )
216232
217233 return document
218234
@@ -245,10 +261,15 @@ async def _text_document_did_open(self, text_document: TextDocumentItem, *args:
245261
246262 document .opened_in_editor = True
247263
248- await self .did_open (self , document , callback_filter = language_id_filter (document ))
264+ create_sub_task (
265+ self .did_open (self , document , callback_filter = language_id_filter (document )), loop = self .parent .loop
266+ )
249267
250268 if text_changed :
251- await self .did_change (self , document , callback_filter = language_id_filter (document ))
269+ create_sub_task (
270+ self .did_change (self , document , callback_filter = language_id_filter (document )),
271+ loop = self .parent .loop ,
272+ )
252273
253274 @rpc_method (name = "textDocument/didClose" , param_type = DidCloseTextDocumentParams )
254275 @_logger .call
@@ -260,8 +281,9 @@ async def _text_document_did_close(self, text_document: TextDocumentIdentifier,
260281 document .opened_in_editor = False
261282
262283 await self .close_document (document )
263-
264- await self .did_close (self , document , callback_filter = language_id_filter (document ))
284+ create_sub_task (
285+ self .did_close (self , document , callback_filter = language_id_filter (document )), loop = self .parent .loop
286+ )
265287
266288 @_logger .call
267289 async def close_document (self , document : TextDocument , real_close : bool = False ) -> None :
@@ -274,7 +296,9 @@ async def close_document(self, document: TextDocument, real_close: bool = False)
274296 else :
275297 document ._version = None
276298 if await document .revert (None ):
277- await self .did_change (self , document , callback_filter = language_id_filter (document ))
299+ create_sub_task (
300+ self .did_change (self , document , callback_filter = language_id_filter (document )), loop = self .parent .loop
301+ )
278302
279303 @rpc_method (name = "textDocument/willSave" , param_type = WillSaveTextDocumentParams )
280304 @_logger .call
@@ -299,9 +323,14 @@ async def _text_document_did_save(
299323 text_changed = await document .text () != normalized_text
300324 if text_changed :
301325 await document .save (None , text )
302- await self .did_change (self , document , callback_filter = language_id_filter (document ))
326+ create_sub_task (
327+ self .did_change (self , document , callback_filter = language_id_filter (document )),
328+ loop = self .parent .loop ,
329+ )
303330
304- await self .did_save (self , document , callback_filter = language_id_filter (document ))
331+ create_sub_task (
332+ self .did_save (self , document , callback_filter = language_id_filter (document )), loop = self .parent .loop
333+ )
305334
306335 @rpc_method (name = "textDocument/willSaveWaitUntil" , param_type = WillSaveTextDocumentParams )
307336 @_logger .call
@@ -352,4 +381,6 @@ async def _text_document_did_change(
352381 f"for document { text_document .uri } ."
353382 )
354383
355- await self .did_change (self , document , callback_filter = language_id_filter (document ))
384+ create_sub_task (
385+ self .did_change (self , document , callback_filter = language_id_filter (document )), loop = self .parent .loop
386+ )
0 commit comments