on master help sign in
Remove LspNotDefined, instead return an Option<>
commita123fb60572720a5fd0817b194f4d34534f87b4e authorBlaž Hrastnik <blaz@mxxn.io> dateWed 7 Sep 2022, 16:42 (4 years ago) parentfe37a66
3 files changed+7−11
helix-lsp/src/lib.rs+5−11 helix-term/src/ui/editor.rs+1 helix-view/src/editor.rs+1
helix-lsp/src/lib.rs+5−11
@@ -38,8 +38,6 @@ pub enum Error {
3838 Timeout,
3939 #[error("server closed the stream")]
4040 StreamClosed,
41− #[error("LSP not defined")]
42− LspNotDefined,
4341 #[error("Unhandled")]
4442 Unhandled,
4543 #[error(transparent)]
@@ -320,14 +318,14 @@ impl Registry {
320318 .map(|(_, client)| client.as_ref())
321319 }
322320
323− pub fn get(&mut self, language_config: &LanguageConfiguration) -> Result<Arc<Client>> {
321+ pub fn get(&mut self, language_config: &LanguageConfiguration) -> Result<Option<Arc<Client>>> {
324322 let config = match &language_config.language_server {
325323 Some(config) => config,
326− None => return Err(Error::LspNotDefined),
324+ None => return Ok(None),
327325 };
328326
329327 match self.inner.entry(language_config.scope.clone()) {
330− Entry::Occupied(entry) => Ok(entry.get().1.clone()),
328+ Entry::Occupied(entry) => Ok(Some(entry.get().1.clone())),
331329 Entry::Vacant(entry) => {
332330 // initialize a new client
333331 let id = self.counter.fetch_add(1, Ordering::Relaxed);
@@ -356,11 +354,7 @@ impl Registry {
356354 .await;
357355
358356 if let Err(e) = value {
359− if let Error::LspNotDefined = e {
360− // Skip logging "lsp not defined"
361− } else {
362− log::error!("failed to initialize language server: {}", e);
363− }
357+ log::error!("failed to initialize language server: {}", e);
364358 return;
365359 }
366360
@@ -374,7 +368,7 @@ impl Registry {
374368 });
375369
376370 entry.insert((id, client.clone()));
377− Ok(client)
371+ Ok(Some(client))
378372 }
379373 }
380374 }
helix-term/src/ui/editor.rs+1
@@ -1316,6 +1316,7 @@ impl Component for EditorView {
13161316 if cx.editor.should_close() {
13171317 return EventResult::Ignored(None);
13181318 }
1319+
13191320 // if the focused view still exists and wasn't closed
13201321 if cx.editor.tree.contains(focus) {
13211322 let config = cx.editor.config();
helix-view/src/editor.rs+1
@@ -853,6 +853,7 @@ impl Editor {
853853 )
854854 })
855855 .ok()
856+ .flatten()
856857 });
857858 if let Some(language_server) = language_server {
858859 // only spawn a new lang server if the servers aren't the same