Respect server capabilities on queries (#33538)
Closes https://github.com/zed-industries/zed/issues/33522 Turns out a bunch of Zed requests were not checking their capabilities correctly, due to odd copy-paste and due to default that assumed that the capabilities are met. Adjust the code, which includes the document colors, add the test on the colors case. Release Notes: - Fixed excessive document colors requests for unrelated files
This commit is contained in:
parent
f9987a1141
commit
01dfb6fa82
6 changed files with 259 additions and 74 deletions
|
@ -779,13 +779,42 @@ pub struct DocumentColor {
|
|||
pub color_presentations: Vec<ColorPresentation>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq)]
|
||||
impl Eq for DocumentColor {}
|
||||
|
||||
impl std::hash::Hash for DocumentColor {
|
||||
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
|
||||
self.lsp_range.hash(state);
|
||||
self.color.red.to_bits().hash(state);
|
||||
self.color.green.to_bits().hash(state);
|
||||
self.color.blue.to_bits().hash(state);
|
||||
self.color.alpha.to_bits().hash(state);
|
||||
self.resolved.hash(state);
|
||||
self.color_presentations.hash(state);
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct ColorPresentation {
|
||||
pub label: String,
|
||||
pub text_edit: Option<lsp::TextEdit>,
|
||||
pub additional_text_edits: Vec<lsp::TextEdit>,
|
||||
}
|
||||
|
||||
impl std::hash::Hash for ColorPresentation {
|
||||
fn hash<H: std::hash::Hasher>(&self, state: &mut H) {
|
||||
self.label.hash(state);
|
||||
if let Some(ref edit) = self.text_edit {
|
||||
edit.range.hash(state);
|
||||
edit.new_text.hash(state);
|
||||
}
|
||||
self.additional_text_edits.len().hash(state);
|
||||
for edit in &self.additional_text_edits {
|
||||
edit.range.hash(state);
|
||||
edit.new_text.hash(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone)]
|
||||
pub enum DirectoryLister {
|
||||
Project(Entity<Project>),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue