diff options
Diffstat (limited to 'helix-view/src/document.rs')
-rw-r--r-- | helix-view/src/document.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs index 5fec3361..0f800209 100644 --- a/helix-view/src/document.rs +++ b/helix-view/src/document.rs @@ -16,7 +16,7 @@ use serde::de::{self, Deserialize, Deserializer}; use serde::Serialize; use std::borrow::Cow; use std::cell::Cell; -use std::collections::{HashMap, HashSet}; +use std::collections::HashMap; use std::fmt::Display; use std::future::Future; use std::path::{Path, PathBuf}; @@ -1581,13 +1581,16 @@ impl Document { } pub fn shown_diagnostics(&self) -> impl Iterator<Item = &Diagnostic> + DoubleEndedIterator { - let ls_ids: HashSet<_> = self - .language_servers_with_feature(LanguageServerFeature::Diagnostics) - .map(|ls| ls.id()) - .collect(); - self.diagnostics - .iter() - .filter(move |d| ls_ids.contains(&d.language_server_id)) + self.diagnostics.iter().filter(|d| { + self.language_servers() + .find(|ls| ls.id() == d.language_server_id) + .and_then(|ls| { + let config = self.language_config()?; + let features = config.language_servers.get(ls.name())?; + Some(features.has_feature(LanguageServerFeature::Diagnostics)) + }) + == Some(true) + }) } pub fn replace_diagnostics( |