@@ -2433,11 +2433,10 @@ impl Project {
.and_then(|shared_buffers| shared_buffers.get(&envelope.payload.buffer_id).cloned())
.ok_or_else(|| anyhow!("unknown buffer id {}", envelope.payload.buffer_id))
})?;
- buffer
- .update(&mut cx, |buffer, _| {
- buffer.wait_for_version([start.timestamp, end.timestamp].into_iter().collect())
- })
- .await;
+ let version = buffer.read_with(&cx, |buffer, _| buffer.version());
+ if !version.observed(start.timestamp) || !version.observed(end.timestamp) {
+ Err(anyhow!("code action request references unreceived edits"))?;
+ }
let code_actions = this.update(&mut cx, |this, cx| {
Ok::<_, anyhow::Error>(this.code_actions(&buffer, start..end, cx))
})?;
@@ -3622,6 +3622,15 @@ mod tests {
..Default::default()
}]))
});
+
+ fake_server.handle_request::<lsp::request::CodeActionRequest, _>(|_| {
+ Some(vec![lsp::CodeActionOrCommand::CodeAction(
+ lsp::CodeAction {
+ title: "the-code-action".to_string(),
+ ..Default::default()
+ },
+ )])
+ });
});
Arc::get_mut(&mut host_lang_registry)
@@ -4180,7 +4189,7 @@ mod tests {
drop(buffer);
});
}
- 10..=19 => {
+ 10..=14 => {
project
.update(&mut cx, |project, cx| {
log::info!(
@@ -4193,6 +4202,19 @@ mod tests {
.await
.expect("completion request failed");
}
+ 15..=19 => {
+ project
+ .update(&mut cx, |project, cx| {
+ log::info!(
+ "Guest {}: requesting code actions for buffer {:?}",
+ guest_id,
+ buffer.read(cx).file().unwrap().full_path(cx)
+ );
+ project.code_actions(&buffer, 0..0, cx)
+ })
+ .await
+ .expect("completion request failed");
+ }
_ => {
buffer.update(&mut cx, |buffer, cx| {
log::info!(