Skip to content

Commit e3e7527

Browse files
committed
do not refresh diagnoses so often
1 parent d2d69a9 commit e3e7527

File tree

3 files changed

+22
-5
lines changed

3 files changed

+22
-5
lines changed

robotcode/language_server/common/parts/diagnostics.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,8 @@ def __init__(self, protocol: LanguageServerProtocol) -> None:
132132

133133
self.in_get_workspace_diagnostics = Event(True)
134134

135+
self.refresh_task: Optional[asyncio.Task[Any]] = None
136+
135137
async def initialized(self, sender: Any) -> None:
136138
self._ensure_diagnostics_thread_started()
137139

@@ -490,7 +492,19 @@ async def get_diagnostics_mode(self, uri: Uri) -> DiagnosticsMode:
490492

491493
return DiagnosticsMode.OPENFILESONLY
492494

493-
async def refresh(self) -> None:
495+
async def __do_refresh(self, now: bool = False) -> None:
496+
if not now:
497+
await asyncio.sleep(1)
498+
499+
await self.__refresh()
500+
501+
async def refresh(self, now: bool = False) -> None:
502+
if self.refresh_task is not None and not self.refresh_task.done():
503+
self.refresh_task.get_loop().call_soon_threadsafe(self.refresh_task.cancel)
504+
505+
self.refresh_task = create_sub_task(self.__do_refresh(now), loop=self.diagnostics_loop)
506+
507+
async def __refresh(self) -> None:
494508
if (
495509
self.parent.client_capabilities
496510
and self.parent.client_capabilities.workspace

robotcode/language_server/robotframework/utils/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def get_robot_version() -> Version:
2626
if _robot_version is None:
2727
import robot
2828

29-
return create_version_from_str(robot.get_version())
29+
_robot_version = create_version_from_str(robot.get_version())
3030
return _robot_version
3131

3232

robotcode/utils/async_tools.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ async def create_inner_task(coro: Callable[..., Coroutine[Any, Any, _T]], *args:
322322
if ct is not None and result is not None:
323323
_running_tasks[result].children.add(ct)
324324

325-
inner_task = create_sub_task(coro(*args, **kwargs))
325+
inner_task = create_sub_task(coro(*args, **kwargs), name=coro.__qualname__)
326326

327327
if canceled:
328328
inner_task.cancel()
@@ -406,7 +406,8 @@ def set_result(w: asyncio.Future[Any], ev: threading.Event) -> None:
406406
check_canceled_sync()
407407

408408
if time.monotonic() - start > 120:
409-
raise TimeoutError("Can't set future result.")
409+
warnings.warn("Can't set future result.")
410+
break
410411

411412
time.sleep(0.001)
412413

@@ -479,6 +480,7 @@ async def acquire(self) -> bool:
479480
self._waiters.append(fut)
480481

481482
try:
483+
# await asyncio.wait_for(fut, 120)
482484
await fut
483485
finally:
484486
async with self.__inner_lock():
@@ -530,7 +532,8 @@ def set_result(w: asyncio.Future[Any], ev: threading.Event) -> None:
530532
while not done.is_set():
531533

532534
if time.monotonic() - start > 120:
533-
raise TimeoutError("Can't set future result.")
535+
warnings.warn("Can't set future result.")
536+
break
534537

535538
await asyncio.sleep(0.001)
536539
else:

0 commit comments

Comments
 (0)