Skip to content

Commit 6700d75

Browse files
committed
Fix error propagation.
1 parent 8ddeb24 commit 6700d75

File tree

1 file changed

+24
-27
lines changed

1 file changed

+24
-27
lines changed

src/languageclient.rs

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -2432,38 +2432,35 @@ impl State {
24322432
let line = ctx.lnum - 1;
24332433
let character = ctx.ccol - 1;
24342434

2435-
let mut result: Result<Value> = Ok(Value::Null);
2436-
let completion = self.textDocument_completion(&json!({
2435+
let result = self.textDocument_completion(
2436+
&json!({
24372437
"buftype": "",
24382438
"languageId": ctx.filetype,
24392439
"filename": filename,
24402440
"line": line,
24412441
"character": character,
2442-
"handle": false}).to_params()?)
2443-
.unwrap_or_else(|err| {
2444-
result = Err(err);
2445-
Value::Null
2446-
});
2447-
let completion: CompletionResponse = serde_json::from_value(completion)
2448-
.unwrap_or_else(|err| {
2449-
if result.is_ok() {
2450-
result = Err(err.into());
2451-
}
2452-
CompletionResponse::List(CompletionList {
2453-
is_incomplete: true,
2454-
items: vec![]})
2455-
});
2456-
let is_incomplete = match completion {
2457-
CompletionResponse::Array(_) => false,
2458-
CompletionResponse::List(ref list) => list.is_incomplete,
2459-
};
2460-
let matches: Result<Vec<VimCompleteItem>> = match completion {
2461-
CompletionResponse::Array(arr) => arr,
2462-
CompletionResponse::List(list) => list.items,
2463-
}.iter()
2464-
.map(FromLSP::from_lsp)
2465-
.collect();
2466-
let matches = matches?;
2442+
"handle": false})
2443+
.to_params()?,
2444+
);
2445+
let is_incomplete;
2446+
let matches;
2447+
if let Ok(ref value) = result {
2448+
let completion = serde_json::from_value(value.clone())?;
2449+
is_incomplete = match completion {
2450+
CompletionResponse::List(ref list) => list.is_incomplete,
2451+
_ => true,
2452+
};
2453+
let matches_result: Result<Vec<VimCompleteItem>> = match completion {
2454+
CompletionResponse::Array(arr) => arr,
2455+
CompletionResponse::List(list) => list.items,
2456+
}.iter()
2457+
.map(FromLSP::from_lsp)
2458+
.collect();
2459+
matches = matches_result?;
2460+
} else {
2461+
is_incomplete = false;
2462+
matches = vec![];
2463+
}
24672464
self.call::<_, u8>(
24682465
None,
24692466
"ncm2#complete",

0 commit comments

Comments
 (0)