on master help sign in
Use a deadline when eagerly processing notifications
f2d8ce3Blaž Hrastnik
helix-term/src/application.rs+7
@@ -159,9 +159,16 @@ impl Application {
159 }
159 }
160 Some((id, call)) = self.editor.language_servers.incoming.next() => {
160 Some((id, call)) = self.editor.language_servers.incoming.next() => {
161 self.handle_language_server_message(call, id).await;
161 self.handle_language_server_message(call, id).await;
162+
162 // eagerly process any other available notifications/calls
163 // eagerly process any other available notifications/calls
164+ let now = std::time::Instant::now();
165+ let deadline = std::time::Duration::from_millis(10);
163 while let Some(Some((id, call))) = self.editor.language_servers.incoming.next().now_or_never() {
166 while let Some(Some((id, call))) = self.editor.language_servers.incoming.next().now_or_never() {
164 self.handle_language_server_message(call, id).await;
167 self.handle_language_server_message(call, id).await;
168+
169+ if now.elapsed() > deadline { // use a deadline so we don't block too long
170+ break;
171+ }
165 }
172 }
166 self.render();
173 self.render();
167 }
174 }