Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-view/src/document.rs')
-rw-r--r--helix-view/src/document.rs25
1 files changed, 20 insertions, 5 deletions
diff --git a/helix-view/src/document.rs b/helix-view/src/document.rs
index dcdc8dc2..1b3a77b6 100644
--- a/helix-view/src/document.rs
+++ b/helix-view/src/document.rs
@@ -1435,16 +1435,12 @@ impl Document {
// TODO: move to hook
// emit lsp notification
for language_server in self.language_servers() {
- let notify = language_server.text_document_did_change(
+ let _ = language_server.text_document_did_change(
self.versioned_identifier(),
&old_doc,
self.text(),
changes,
);
-
- if let Some(notify) = notify {
- tokio::spawn(notify);
- }
}
}
@@ -1761,6 +1757,25 @@ impl Document {
})
}
+ pub fn language_servers_with_feature_owned(
+ &self,
+ feature: LanguageServerFeature,
+ ) -> impl Iterator<Item = Arc<helix_lsp::Client>> + '_ {
+ self.language_config().into_iter().flat_map(move |config| {
+ config.language_servers.iter().filter_map(move |features| {
+ let ls = self.language_servers.get(&features.name)?.clone();
+ if ls.is_initialized()
+ && ls.supports_feature(feature)
+ && features.has_feature(feature)
+ {
+ Some(ls)
+ } else {
+ None
+ }
+ })
+ })
+ }
+
pub fn supports_language_server(&self, id: LanguageServerId) -> bool {
self.language_servers().any(|l| l.id() == id)
}