Notify all language servers only when a buffer is saved

Other notifications such as opening, closing or changing a document
are still tied to the buffer's language.
This commit is contained in:
Antonio Scandurra 2022-03-09 10:34:42 +01:00
parent 4cb4b99c56
commit 0a9595b5fa
2 changed files with 129 additions and 198 deletions

View file

@ -225,7 +225,9 @@ impl LspCommand for PerformRename {
if let Some(edit) = message {
let language_server = project
.read_with(&cx, |project, cx| {
project.language_server_for_buffer(&buffer, cx).cloned()
project
.language_server_for_buffer(buffer.read(cx), cx)
.cloned()
})
.ok_or_else(|| anyhow!("no language server found for buffer"))?;
let language = buffer
@ -343,7 +345,9 @@ impl LspCommand for GetDefinition {
let mut definitions = Vec::new();
let language_server = project
.read_with(&cx, |project, cx| {
project.language_server_for_buffer(&buffer, cx).cloned()
project
.language_server_for_buffer(buffer.read(cx), cx)
.cloned()
})
.ok_or_else(|| anyhow!("no language server found for buffer"))?;
let language = buffer
@ -519,7 +523,9 @@ impl LspCommand for GetReferences {
let mut references = Vec::new();
let language_server = project
.read_with(&cx, |project, cx| {
project.language_server_for_buffer(&buffer, cx).cloned()
project
.language_server_for_buffer(buffer.read(cx), cx)
.cloned()
})
.ok_or_else(|| anyhow!("no language server found for buffer"))?;
let language = buffer