aboutsummaryrefslogtreecommitdiff
path: root/helix-lsp/src
diff options
context:
space:
mode:
Diffstat (limited to 'helix-lsp/src')
-rw-r--r--helix-lsp/src/lib.rs16
1 files changed, 5 insertions, 11 deletions
diff --git a/helix-lsp/src/lib.rs b/helix-lsp/src/lib.rs
index 516c93ca..a39325fa 100644
--- a/helix-lsp/src/lib.rs
+++ b/helix-lsp/src/lib.rs
@@ -38,8 +38,6 @@ pub enum Error {
Timeout,
#[error("server closed the stream")]
StreamClosed,
- #[error("LSP not defined")]
- LspNotDefined,
#[error("Unhandled")]
Unhandled,
#[error(transparent)]
@@ -320,14 +318,14 @@ impl Registry {
.map(|(_, client)| client.as_ref())
}
- pub fn get(&mut self, language_config: &LanguageConfiguration) -> Result<Arc<Client>> {
+ pub fn get(&mut self, language_config: &LanguageConfiguration) -> Result<Option<Arc<Client>>> {
let config = match &language_config.language_server {
Some(config) => config,
- None => return Err(Error::LspNotDefined),
+ None => return Ok(None),
};
match self.inner.entry(language_config.scope.clone()) {
- Entry::Occupied(entry) => Ok(entry.get().1.clone()),
+ Entry::Occupied(entry) => Ok(Some(entry.get().1.clone())),
Entry::Vacant(entry) => {
// initialize a new client
let id = self.counter.fetch_add(1, Ordering::Relaxed);
@@ -356,11 +354,7 @@ impl Registry {
.await;
if let Err(e) = value {
- if let Error::LspNotDefined = e {
- // Skip logging "lsp not defined"
- } else {
- log::error!("failed to initialize language server: {}", e);
- }
+ log::error!("failed to initialize language server: {}", e);
return;
}
@@ -374,7 +368,7 @@ impl Registry {
});
entry.insert((id, client.clone()));
- Ok(client)
+ Ok(Some(client))
}
}
}