@@ -94,6 +94,7 @@ def __init__(
9494 self ._local_cached = _LocalCache ()
9595 self ._working = Condition ()
9696 self ._max_results = self ._supervisor .match .max_results
97+ self ._cached_clients : AbstractSet [str ] = set ()
9798 self ._ex .run (self ._poll ())
9899
99100 def interrupt (self ) -> None :
@@ -129,6 +130,18 @@ async def cont() -> None:
129130 self ._cache .set_cache (
130131 {client : chunked }, skip_db = False
131132 )
133+ if context := self ._supervisor .current_context :
134+ cached_clients = self ._cached_clients
135+ async for lsp_comps in self ._request (
136+ context , cached_clients = cached_clients
137+ ):
138+ if not self ._work_lock .locked ():
139+ for chunked in batched (
140+ lsp_comps .items , n = CACHE_CHUNK
141+ ):
142+ self ._cache .set_cache (
143+ {lsp_comps .client : chunked }, skip_db = False
144+ )
132145
133146 await self ._with_interrupt (cont ())
134147
@@ -144,6 +157,7 @@ async def _work(self, context: Context) -> AsyncIterator[Completion]:
144157 use_cache , cached_clients , cached = self ._cache .apply_cache (
145158 context , always = False
146159 )
160+ self ._cached_clients = cached_clients
147161 if not use_cache :
148162 self ._local_cached .pre .clear ()
149163 self ._local_cached .post .clear ()
0 commit comments