Skip to content

Commit a123fb6

Browse files
committed
Remove LspNotDefined, instead return an Option<>
1 parent fe37a66 commit a123fb6

File tree

3 files changed

+7
-11
lines changed

3 files changed

+7
-11
lines changed

helix-lsp/src/lib.rs

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

0 commit comments

Comments
 (0)