Skip to content

Commit 84f4109

Browse files
committed
improvement race condition
1 parent c505ed1 commit 84f4109

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

listener.py

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
logger = logging.getLogger(__name__)
99

1010
from LSP.plugin.core.registry import windows
11+
from LSP.plugin.core.types import FEATURES_TIMEOUT
1112

1213

1314
class TriggerInfo:
@@ -61,12 +62,7 @@ def single_update_attempt(self):
6162
last_event=self.trigger_info.last_event,
6263
generate_imports=self.trigger_info.generate_imports,
6364
)
64-
sublime.set_timeout_async(
65-
lambda: self._update(
66-
self.trigger_info.view, self.trigger_info.generate_imports
67-
),
68-
300,
69-
)
65+
self._update(self.trigger_info.view, self.trigger_info.generate_imports)
7066
self.trigger_info = new_trigger_info
7167
except Exception:
7268
logger.exception("Error during single update attempt:")
@@ -123,8 +119,8 @@ def _update(self, view, generate_imports=True):
123119
)
124120
logger.debug("finished update of view %s in window %s", view, view.window())
125121

126-
def _kick(self, view, generate_imports=True):
127-
now = time.perf_counter()
122+
def _kick(self, view, generate_imports=True, timestamp=None):
123+
now = timestamp or time.perf_counter()
128124
new_trigger_info = TriggerInfo(
129125
last_tick=self.trigger_info.last_tick,
130126
view=view,
@@ -146,7 +142,10 @@ def _kick(self, view, generate_imports=True):
146142
logger.debug("no-op")
147143

148144
def on_modified_async(self, view):
149-
self._kick(view, False)
145+
timestamp = time.perf_counter()
146+
sublime.set_timeout_async(
147+
lambda: self._kick(view, True, timestamp=timestamp), FEATURES_TIMEOUT
148+
)
150149

151150
def on_load_async(self, view):
152151
self._kick(view)

0 commit comments

Comments
 (0)