Skip to content

Commit db850cf

Browse files
bors[bot]matklad
andauthored
Merge #2643
2643: Don't fire no-op changes after files are saved to disk r=matklad a=matklad Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2 parents 436df29 + 6acef5a commit db850cf

File tree

2 files changed

+9
-7
lines changed

2 files changed

+9
-7
lines changed

crates/ra_lsp_server/src/main_loop.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -305,15 +305,13 @@ fn loop_turn(
305305
log::info!("queued count = {}", queue_count);
306306
}
307307

308-
let mut state_changed = false;
309308
match event {
310309
Event::Task(task) => {
311310
on_task(task, &connection.sender, &mut loop_state.pending_requests, world_state);
312311
world_state.maybe_collect_garbage();
313312
}
314313
Event::Vfs(task) => {
315314
world_state.vfs.write().handle_task(task);
316-
state_changed = true;
317315
}
318316
Event::Lib(lib) => {
319317
world_state.add_lib(lib);
@@ -338,7 +336,6 @@ fn loop_turn(
338336
&mut loop_state.subscriptions,
339337
not,
340338
)?;
341-
state_changed = true;
342339
}
343340
Message::Response(resp) => {
344341
let removed = loop_state.pending_responses.remove(&resp.id);
@@ -349,7 +346,12 @@ fn loop_turn(
349346
},
350347
};
351348

352-
loop_state.pending_libraries.extend(world_state.process_changes());
349+
let mut state_changed = false;
350+
if let Some(changes) = world_state.process_changes() {
351+
state_changed = true;
352+
loop_state.pending_libraries.extend(changes);
353+
}
354+
353355
while loop_state.in_flight_libraries < MAX_IN_FLIGHT_LIBS
354356
&& !loop_state.pending_libraries.is_empty()
355357
{

crates/ra_lsp_server/src/world.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,10 @@ impl WorldState {
145145
/// FIXME: better API here
146146
pub fn process_changes(
147147
&mut self,
148-
) -> Vec<(SourceRootId, Vec<(FileId, RelativePathBuf, Arc<String>)>)> {
148+
) -> Option<Vec<(SourceRootId, Vec<(FileId, RelativePathBuf, Arc<String>)>)>> {
149149
let changes = self.vfs.write().commit_changes();
150150
if changes.is_empty() {
151-
return Vec::new();
151+
return None;
152152
}
153153
let mut libs = Vec::new();
154154
let mut change = AnalysisChange::new();
@@ -182,7 +182,7 @@ impl WorldState {
182182
}
183183
}
184184
self.analysis_host.apply_change(change);
185-
libs
185+
Some(libs)
186186
}
187187

188188
pub fn add_lib(&mut self, data: LibraryData) {

0 commit comments

Comments
 (0)